iobroker.javascript 10.2.4 → 10.3.0

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 (186) hide show
  1. package/README.md +10 -21
  2. package/admin/assets/AiChatPanel-CpY4Bun-.js +27 -0
  3. package/admin/assets/{AiChatService-Bsp_rhVx.js → AiChatService-QKcpW4jQ.js} +1 -1
  4. package/admin/assets/AiDiffView-DscPfZ38.js +1 -0
  5. package/admin/assets/{AiInlineProvider-BxOW88xU.js → AiInlineProvider-DTSPKoXG.js} +1 -1
  6. package/admin/assets/BlocklyEditor-BZyoN1JE.js +301 -0
  7. package/admin/assets/Compile-B0uHjrBE.css +1 -0
  8. package/admin/assets/Compile-Oss28m_f.js +165 -0
  9. package/admin/assets/Debugger-teJTIU-2.js +15 -0
  10. package/admin/assets/Documentation-uz4Ut9pT.js +4339 -0
  11. package/admin/assets/ExpandMore-V5Ix1QB1.js +1 -0
  12. package/admin/assets/FbEditor-B8S-mCvc.css +1 -0
  13. package/admin/assets/FbEditor-aOZ-RpPV.js +15 -0
  14. package/admin/assets/Import-BIC5Ee9z.js +1 -0
  15. package/admin/assets/NotificationsActive-BdzH44gp.js +1 -0
  16. package/admin/assets/RulesEditor-CcDVthPa.js +1 -0
  17. package/admin/assets/{ScriptEditor-BCGahS47.js → ScriptEditor-CviB6Hif.js} +2 -2
  18. package/admin/assets/ScriptEditorVanillaMonaco-ByuXwybM.js +3 -0
  19. package/admin/assets/Send-Mdo32jMb.js +1 -0
  20. package/admin/assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BnL93BgK.js +1 -0
  21. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js +1217 -0
  22. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DVaMIZyC.js +9 -0
  23. package/admin/assets/aiPromptBuilder-yTB6N2VT.js +1 -0
  24. package/admin/assets/blocklyTheme-CGhU3cEO.js +1 -0
  25. package/admin/assets/blocks_action-BQ4O7NRE.js +1 -0
  26. package/admin/assets/{blocks_convert-CLb0DLyc.js → blocks_convert-0VBjfhqQ.js} +1 -1
  27. package/admin/assets/blocks_logic-DAo99xDr.js +1 -0
  28. package/admin/assets/blocks_number-C--e19NU.js +1 -0
  29. package/admin/assets/blocks_object-D0TPhdzg.js +1 -0
  30. package/admin/assets/blocks_procedures-DgTxgXdB.js +3 -0
  31. package/admin/assets/{blocks_sendto-BxCMg9X4.js → blocks_sendto-CRIrtOUc.js} +1 -1
  32. package/admin/assets/blocks_switch-b_GYfF0n.js +2 -0
  33. package/admin/assets/blocks_system-BdkUdSsc.js +1 -0
  34. package/admin/assets/blocks_text-DSFhEVOf.js +1 -0
  35. package/admin/assets/blocks_time-CqALAiJp.js +1 -0
  36. package/admin/assets/blocks_timeout-yrOD2pZp.js +1 -0
  37. package/admin/assets/{blocks_trigger-XivsIDE5.js → blocks_trigger-DeAYXpSS.js} +1 -1
  38. package/admin/assets/{cronHoverProvider-BZMOFHO_.js → cronHoverProvider-DoO2_tpG.js} +1 -1
  39. package/admin/assets/{field_cron-CxKi__cX.js → field_cron-D3Ts_s9M.js} +1 -1
  40. package/admin/assets/{field_oid-CJIYiGxY.js → field_oid-BRNXredg.js} +1 -1
  41. package/admin/assets/{field_script-CehplM7L.js → field_script-3X6ousg7.js} +1 -1
  42. package/admin/assets/helpers-BTGaTdnT.js +1 -0
  43. package/admin/assets/{hostInit-Bs-bStPF.js → hostInit-2h2Cbsaw.js} +1 -1
  44. package/admin/assets/iconLibraryData-B5fiyl1C.js +1 -0
  45. package/admin/assets/index-BHhhebRG.css +1 -0
  46. package/admin/assets/index-CbQlIKB_.js +156 -0
  47. package/admin/assets/{inlineChatWidget-NIvdRGmU.js → inlineChatWidget-BwQVCPkx.js} +1 -1
  48. package/admin/assets/{inlineDiffController-Qh402KhK.js → inlineDiffController-BsDDsDHn.js} +1 -1
  49. package/admin/assets/loadBlocks-RpqM7PwO.js +117 -0
  50. package/admin/assets/loadMonaco-BVOEahNw.js +1 -0
  51. package/admin/assets/{mf-entry-bootstrap-0-019228a5.js → mf-entry-bootstrap-0-0deef484.js} +3 -3
  52. package/admin/assets/{pendingShares-B3t6ewri.js → pendingShares-BaAadIDv.js} +1 -1
  53. package/admin/assets/reactour.esm-DX9ZgYlx.js +137 -0
  54. package/admin/assets/stateHoverProvider-BEadnSXp.js +11 -0
  55. package/admin/assets/tileFbd-CWAy7R7m.svg +85 -0
  56. package/admin/custom/assets/Components-FkGDIlId.js +1 -0
  57. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-Cs88NUCd.js +1 -0
  58. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-P-8ffWXw.js +1 -0
  59. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-ZVuRAEo5.js +1 -0
  60. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DVb0ZZ1Q.js +1217 -0
  61. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Dna3WF04.js +1 -0
  62. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.js-DcjdCGAx.js +1 -0
  63. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare__date_mf_2_fns__loadShare__.js-CnhNjamd.js +1 -0
  64. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare__leaflet__loadShare__.js-im3edKNs.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare__leaflet__loadShare__.js-Dz7BFJqH.js} +1 -1
  65. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-B0olko2J.js +1 -0
  66. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-CzN4reh_.js +122 -0
  67. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__prebuild__leaflet__prebuild__-xPcBaiTQ.js +1 -0
  68. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-Byvr2uOb.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-CXpyx8Vy.js} +1 -1
  69. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__37453319418803__prebuild__react_mf_2_dom_mf_1_client__prebuild__-DuFBE5fh.js +9 -0
  70. package/admin/custom/assets/{hostInit-IJMNq3h7.js → hostInit-6oh4UY2k.js} +1 -1
  71. package/admin/custom/assets/iconLibraryData-B5fiyl1C.js +1 -0
  72. package/admin/custom/assets/index-BrlyEy6J.js +1 -0
  73. package/admin/custom/assets/lib-BmDlTzq2.js +3 -0
  74. package/admin/custom/assets/{mf-entry-bootstrap-0-f149bc46.js → mf-entry-bootstrap-0-ad1cd7d0.js} +3 -3
  75. package/admin/custom/assets/pendingShares-kV2kwejX.js +1 -0
  76. package/admin/custom/assets/rolldown-runtime-Dqfqb5bO.js +1 -0
  77. package/admin/custom/customComponents.js +3 -2
  78. package/admin/custom/i18n/en.json +39 -39
  79. package/admin/custom/i18n/es.json +1 -1
  80. package/admin/custom/i18n/fr.json +2 -2
  81. package/admin/custom/i18n/it.json +1 -1
  82. package/admin/custom/i18n/nl.json +2 -2
  83. package/admin/custom/i18n/pt.json +2 -2
  84. package/admin/custom/i18n/ru.json +2 -2
  85. package/admin/custom/i18n/uk.json +1 -1
  86. package/admin/custom/i18n/zh-cn.json +1 -1
  87. package/admin/i18n/de.json +1 -1
  88. package/admin/i18n/en.json +115 -115
  89. package/admin/i18n/fr.json +115 -115
  90. package/admin/i18n/it.json +115 -115
  91. package/admin/i18n/nl.json +115 -115
  92. package/admin/i18n/pl.json +1 -1
  93. package/admin/i18n/pt.json +115 -115
  94. package/admin/i18n/ru.json +115 -115
  95. package/admin/i18n/uk.json +115 -115
  96. package/admin/i18n/zh-cn.json +115 -115
  97. package/admin/mf-manifest.json +1 -1
  98. package/admin/mf-stats.json +1 -1
  99. package/admin/remoteEntry.js +2 -2
  100. package/admin/tab.html +3 -7
  101. package/build/lib/fb/analyze.js +288 -0
  102. package/build/lib/fb/analyze.js.map +1 -0
  103. package/build/lib/fb/blocks.js +605 -0
  104. package/build/lib/fb/blocks.js.map +1 -0
  105. package/build/lib/fb/generate.js +326 -0
  106. package/build/lib/fb/generate.js.map +1 -0
  107. package/build/lib/fb/graph.js +240 -0
  108. package/build/lib/fb/graph.js.map +1 -0
  109. package/build/lib/fb/index.js +57 -0
  110. package/build/lib/fb/index.js.map +1 -0
  111. package/build/lib/fb/js.js +33 -0
  112. package/build/lib/fb/js.js.map +1 -0
  113. package/build/lib/fb/layout.js +205 -0
  114. package/build/lib/fb/layout.js.map +1 -0
  115. package/build/lib/fb/library.js +657 -0
  116. package/build/lib/fb/library.js.map +1 -0
  117. package/build/lib/fb/runtime.js +793 -0
  118. package/build/lib/fb/runtime.js.map +1 -0
  119. package/build/lib/fb/time.js +76 -0
  120. package/build/lib/fb/time.js.map +1 -0
  121. package/build/lib/fb/types.js +19 -0
  122. package/build/lib/fb/types.js.map +1 -0
  123. package/build/lib/fb/user.js +78 -0
  124. package/build/lib/fb/user.js.map +1 -0
  125. package/build/lib/javascript.d.ts +17 -17
  126. package/build/lib/mirror.js +4 -0
  127. package/build/lib/mirror.js.map +1 -1
  128. package/build/lib/sandbox.js +44 -0
  129. package/build/lib/sandbox.js.map +1 -1
  130. package/build/main.js +66 -1
  131. package/build/main.js.map +1 -1
  132. package/build/types.d.ts +9 -1
  133. package/docs/de/README.md +1 -1
  134. package/docs/de/fbd.md +274 -0
  135. package/docs/de/javascript.md +2167 -0
  136. package/docs/en/fbd.md +260 -0
  137. package/docs/en/javascript.md +28 -30
  138. package/io-package.json +52 -28
  139. package/package.json +8 -8
  140. package/admin/assets/AiChatPanel-AZko1BsN.js +0 -27
  141. package/admin/assets/AiDiffView-Cri2QFh1.js +0 -1
  142. package/admin/assets/Debugger-CVDh3kgz.js +0 -15
  143. package/admin/assets/Error-Ch2nx5uC.js +0 -1
  144. package/admin/assets/Import-XKVP-nRT.js +0 -1
  145. package/admin/assets/RulesEditor-DsO4cKIk.js +0 -1
  146. package/admin/assets/ScriptEditorVanillaMonaco-BDAw2Bw6.js +0 -3
  147. package/admin/assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BMAFQFoH.js +0 -1
  148. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js +0 -1217
  149. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CDctpiPx.js +0 -9
  150. package/admin/assets/aiPromptBuilder-aJfHa-eU.js +0 -1
  151. package/admin/assets/blocks_action-DS28sNfo.js +0 -1
  152. package/admin/assets/blocks_logic-Dpp2fwlu.js +0 -1
  153. package/admin/assets/blocks_number-N4IfHvYD.js +0 -1
  154. package/admin/assets/blocks_object-uK7FHVhS.js +0 -1
  155. package/admin/assets/blocks_procedures-C_KD0Bm6.js +0 -3
  156. package/admin/assets/blocks_switch-C8Rls5pK.js +0 -2
  157. package/admin/assets/blocks_system-CEQnj5fY.js +0 -1
  158. package/admin/assets/blocks_text-BDEWxu0P.js +0 -1
  159. package/admin/assets/blocks_time-aHQQK1Uz.js +0 -1
  160. package/admin/assets/blocks_timeout-C2L93TLJ.js +0 -1
  161. package/admin/assets/helpers-DiwtLpXM.js +0 -1
  162. package/admin/assets/index-B0FfAYMN.js +0 -871
  163. package/admin/assets/index-CXaeqPRy.css +0 -1
  164. package/admin/assets/stateHoverProvider-BkW15VMN.js +0 -9
  165. package/admin/assets/virtualExposes-DgGB-18P.js +0 -1
  166. package/admin/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-CiidVc0O.js +0 -1
  167. package/admin/assets/virtual_mf-exposes___mfe_internal__iobroker_javascript__remoteEntry_js-ChiJXsfH.js +0 -1
  168. package/admin/custom/assets/Components-SGnA-3W_.js +0 -1
  169. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-Bx3X6TLB.js +0 -1
  170. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-Cc7MmJgr.js +0 -1
  171. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CdvEvX5z.js +0 -1
  172. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D5NaoeJi.js +0 -1217
  173. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-Cbgw_a3f.js +0 -1
  174. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.js-CMr75K5w.js +0 -1
  175. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare__date_mf_2_fns__loadShare__.js-DKIvPDPX.js +0 -1
  176. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-D50aYKgD.js +0 -1
  177. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-CEzQFX7o.js +0 -122
  178. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__prebuild__leaflet__prebuild__-BUDmnAcx.js +0 -1
  179. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__136440932828998__prebuild__react_mf_2_dom_mf_1_client__prebuild__-D_1oh1WH.js +0 -9
  180. package/admin/custom/assets/index-7r4VklMp.js +0 -1
  181. package/admin/custom/assets/lib-DDU2Oe48.js +0 -3
  182. package/admin/custom/assets/pendingShares-DarGQhyO.js +0 -1
  183. package/admin/custom/assets/rolldown-runtime-BcKkbAw3.js +0 -1
  184. package/admin/custom/assets/virtualExposes-C0IqMANQ.js +0 -1
  185. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-CqKvh5Xu.js +0 -1
  186. package/admin/custom/assets/virtual_mf-exposes___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-DrBN_S5o.js +0 -2
@@ -1 +1 @@
1
- {"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.ssr.js","path":"","type":"module"},"types":{"path":"","name":"","zip":"@mf-types.zip","api":"@mf-types.d.ts"},"globalName":"iobroker_javascript","pluginVersion":"1.21.6","publicPath":"auto"},"shared":[{"id":"iobroker_javascript:react","name":"react","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"9.4.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/gui-components","name":"@iobroker/gui-components","version":"10.2.3","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react/jsx-runtime","name":"react/jsx-runtime","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom/client","name":"react-dom/client","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CDctpiPx.js"],"sync":[]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[],"buildOutput":[{"fileName":"assets/hostInit-Bs-bStPF.js","type":"chunk","isEntry":false,"size":3094},{"fileName":"assets/index-B0FfAYMN.js","type":"chunk","isEntry":true,"size":1079826},{"fileName":"assets/pendingShares-B3t6ewri.js","type":"chunk","isEntry":false,"size":1383},{"fileName":"assets/virtualExposes-DgGB-18P.js","type":"chunk","isEntry":false,"size":126},{"fileName":"remoteEntry.js","type":"chunk","isEntry":false,"size":957},{"fileName":"assets/AiChatPanel-AZko1BsN.js","type":"chunk","isEntry":false,"size":53804},{"fileName":"assets/AiChatService-Bsp_rhVx.js","type":"chunk","isEntry":false,"size":15373},{"fileName":"assets/AiDatapointProvider-DzFpUKkT.js","type":"chunk","isEntry":false,"size":2429},{"fileName":"assets/AiDiffView-Cri2QFh1.js","type":"chunk","isEntry":false,"size":1517},{"fileName":"assets/AiInlineProvider-BxOW88xU.js","type":"chunk","isEntry":false,"size":2322},{"fileName":"assets/Debugger-CVDh3kgz.js","type":"chunk","isEntry":false,"size":145966},{"fileName":"assets/Error-Ch2nx5uC.js","type":"chunk","isEntry":false,"size":1032},{"fileName":"assets/Import-XKVP-nRT.js","type":"chunk","isEntry":false,"size":6270},{"fileName":"assets/RulesEditor-DsO4cKIk.js","type":"chunk","isEntry":false,"size":27895},{"fileName":"assets/ScriptEditor-BCGahS47.js","type":"chunk","isEntry":false,"size":2206},{"fileName":"assets/ScriptEditorVanillaMonaco-BDAw2Bw6.js","type":"chunk","isEntry":false,"size":26021},{"fileName":"assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BMAFQFoH.js","type":"chunk","isEntry":false,"size":5097},{"fileName":"assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js","type":"chunk","isEntry":false,"size":2352557},{"fileName":"assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CDctpiPx.js","type":"chunk","isEntry":false,"size":209898},{"fileName":"assets/aiPromptBuilder-aJfHa-eU.js","type":"chunk","isEntry":false,"size":77},{"fileName":"assets/applyCodeEdit-D3nb7erO.js","type":"chunk","isEntry":false,"size":633},{"fileName":"assets/blockly-fcfyKYzp.js","type":"chunk","isEntry":false,"size":638050},{"fileName":"assets/blocks_action-DS28sNfo.js","type":"chunk","isEntry":false,"size":11542},{"fileName":"assets/blocks_convert-CLb0DLyc.js","type":"chunk","isEntry":false,"size":8703},{"fileName":"assets/blocks_logic-Dpp2fwlu.js","type":"chunk","isEntry":false,"size":3949},{"fileName":"assets/blocks_number-N4IfHvYD.js","type":"chunk","isEntry":false,"size":700},{"fileName":"assets/blocks_object-uK7FHVhS.js","type":"chunk","isEntry":false,"size":6451},{"fileName":"assets/blocks_procedures-C_KD0Bm6.js","type":"chunk","isEntry":false,"size":9305},{"fileName":"assets/blocks_sendto-BxCMg9X4.js","type":"chunk","isEntry":false,"size":10968},{"fileName":"assets/blocks_switch-C8Rls5pK.js","type":"chunk","isEntry":false,"size":4639},{"fileName":"assets/blocks_system-CEQnj5fY.js","type":"chunk","isEntry":false,"size":22796},{"fileName":"assets/blocks_text-BDEWxu0P.js","type":"chunk","isEntry":false,"size":1736},{"fileName":"assets/blocks_time-aHQQK1Uz.js","type":"chunk","isEntry":false,"size":12608},{"fileName":"assets/blocks_timeout-C2L93TLJ.js","type":"chunk","isEntry":false,"size":5345},{"fileName":"assets/blocks_trigger-XivsIDE5.js","type":"chunk","isEntry":false,"size":22882},{"fileName":"assets/blocks_words-bpwd7Ia0.js","type":"chunk","isEntry":false,"size":138581},{"fileName":"assets/cronHoverProvider-BZMOFHO_.js","type":"chunk","isEntry":false,"size":1964},{"fileName":"assets/dist-D4uJqRBO.js","type":"chunk","isEntry":false,"size":66971},{"fileName":"assets/docs-compact-D7rpMc7r.js","type":"chunk","isEntry":false,"size":13791},{"fileName":"assets/field_cron-CxKi__cX.js","type":"chunk","isEntry":false,"size":711},{"fileName":"assets/field_oid-CJIYiGxY.js","type":"chunk","isEntry":false,"size":9058},{"fileName":"assets/field_script-CehplM7L.js","type":"chunk","isEntry":false,"size":1608},{"fileName":"assets/helpers-DiwtLpXM.js","type":"chunk","isEntry":false,"size":3099},{"fileName":"assets/inlineChatWidget-NIvdRGmU.js","type":"chunk","isEntry":false,"size":6871},{"fileName":"assets/inlineDiffController-Qh402KhK.js","type":"chunk","isEntry":false,"size":7302},{"fileName":"assets/rolldown-runtime-C0FnF6B9.js","type":"chunk","isEntry":false,"size":1291},{"fileName":"assets/stateHoverProvider-BkW15VMN.js","type":"chunk","isEntry":false,"size":144252},{"fileName":"assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-CiidVc0O.js","type":"chunk","isEntry":false,"size":18946},{"fileName":"assets/virtual_mf-exposes___mfe_internal__iobroker_javascript__remoteEntry_js-ChiJXsfH.js","type":"chunk","isEntry":false,"size":24},{"fileName":"assets/vite-preload-helper-CaC3yEL3.js","type":"chunk","isEntry":false,"size":1265},{"fileName":"assets/RulesEditor-D3kTbD_T.css","type":"asset","isEntry":false,"size":15352},{"fileName":"assets/blockly2js-B3Jxf2e-.svg","type":"asset","isEntry":false,"size":8421},{"fileName":"assets/hysteresis-CLhhemcG.png","type":"asset","isEntry":false,"size":12163},{"fileName":"assets/index-CXaeqPRy.css","type":"asset","isEntry":false,"size":7930},{"fileName":"assets/rules2js-DnYyR8mI.svg","type":"asset","isEntry":false,"size":6950},{"fileName":"assets/tileBlockly-BMpdinN3.png","type":"asset","isEntry":false,"size":12893},{"fileName":"assets/tileJS-C48gYbHw.png","type":"asset","isEntry":false,"size":17266},{"fileName":"assets/tileRules-BkbaFIhs.png","type":"asset","isEntry":false,"size":83463},{"fileName":"assets/tileTS-CsXmgy4B.png","type":"asset","isEntry":false,"size":13415},{"fileName":"index.html","type":"asset","isEntry":false,"size":22014},{"fileName":"assets/mf-entry-bootstrap-0-019228a5.js","type":"asset","isEntry":false,"size":2162}],"assetAnalysis":{"react":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"]},"css":{"sync":[],"async":[]}},"react/jsx-runtime":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"]},"css":{"sync":[],"async":[]}},"prop-types":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"]},"css":{"sync":[],"async":[]}},"react-dom":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"]},"css":{"sync":[],"async":[]}},"@mui/material":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"]},"css":{"sync":[],"async":[]}},"@iobroker/gui-components":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"]},"css":{"sync":[],"async":[]}},"react-dom/client":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CDctpiPx.js"]},"css":{"sync":[],"async":[]}}}}
1
+ {"id":"iobroker_javascript","name":"iobroker_javascript","metaData":{"name":"iobroker_javascript","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_javascript"},"remoteEntry":{"name":"remoteEntry.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry.ssr.js","path":"","type":"module"},"types":{"path":"","name":"","zip":"@mf-types.zip","api":"@mf-types.d.ts"},"globalName":"iobroker_javascript","pluginVersion":"1.22.0","publicPath":"auto"},"shared":[{"id":"iobroker_javascript:react","name":"react","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom","name":"react-dom","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@mui/material","name":"@mui/material","version":"9.4.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:prop-types","name":"prop-types","version":"15.8.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:@iobroker/gui-components","name":"@iobroker/gui-components","version":"10.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react/jsx-runtime","name":"react/jsx-runtime","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_javascript:react-dom/client","name":"react-dom/client","version":"19.3.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DVaMIZyC.js"],"sync":[]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[],"buildOutput":[{"fileName":"assets/hostInit-2h2Cbsaw.js","type":"chunk","isEntry":false,"size":3094},{"fileName":"assets/index-CbQlIKB_.js","type":"chunk","isEntry":true,"size":643865},{"fileName":"assets/pendingShares-BaAadIDv.js","type":"chunk","isEntry":false,"size":1383},{"fileName":"remoteEntry.js","type":"chunk","isEntry":false,"size":19903},{"fileName":"assets/AiChatPanel-CpY4Bun-.js","type":"chunk","isEntry":false,"size":53875},{"fileName":"assets/AiChatService-QKcpW4jQ.js","type":"chunk","isEntry":false,"size":15378},{"fileName":"assets/AiDatapointProvider-DzFpUKkT.js","type":"chunk","isEntry":false,"size":2429},{"fileName":"assets/AiDiffView-DscPfZ38.js","type":"chunk","isEntry":false,"size":1659},{"fileName":"assets/AiInlineProvider-DTSPKoXG.js","type":"chunk","isEntry":false,"size":2322},{"fileName":"assets/BlocklyEditor-BZyoN1JE.js","type":"chunk","isEntry":false,"size":224423},{"fileName":"assets/Compile-Oss28m_f.js","type":"chunk","isEntry":false,"size":41648},{"fileName":"assets/Debugger-teJTIU-2.js","type":"chunk","isEntry":false,"size":145934},{"fileName":"assets/Documentation-uz4Ut9pT.js","type":"chunk","isEntry":false,"size":182614},{"fileName":"assets/ExpandMore-V5Ix1QB1.js","type":"chunk","isEntry":false,"size":369},{"fileName":"assets/FbEditor-aOZ-RpPV.js","type":"chunk","isEntry":false,"size":451509},{"fileName":"assets/Import-BIC5Ee9z.js","type":"chunk","isEntry":false,"size":6270},{"fileName":"assets/NotificationsActive-BdzH44gp.js","type":"chunk","isEntry":false,"size":967},{"fileName":"assets/RulesEditor-CcDVthPa.js","type":"chunk","isEntry":false,"size":27883},{"fileName":"assets/ScriptEditor-CviB6Hif.js","type":"chunk","isEntry":false,"size":2206},{"fileName":"assets/ScriptEditorVanillaMonaco-ByuXwybM.js","type":"chunk","isEntry":false,"size":25965},{"fileName":"assets/Send-Mdo32jMb.js","type":"chunk","isEntry":false,"size":271},{"fileName":"assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BnL93BgK.js","type":"chunk","isEntry":false,"size":6833},{"fileName":"assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js","type":"chunk","isEntry":false,"size":2359876},{"fileName":"assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DVaMIZyC.js","type":"chunk","isEntry":false,"size":209857},{"fileName":"assets/aiPromptBuilder-yTB6N2VT.js","type":"chunk","isEntry":false,"size":77},{"fileName":"assets/applyCodeEdit-D3nb7erO.js","type":"chunk","isEntry":false,"size":633},{"fileName":"assets/blockly-fcfyKYzp.js","type":"chunk","isEntry":false,"size":638050},{"fileName":"assets/blocklyTheme-CGhU3cEO.js","type":"chunk","isEntry":false,"size":817},{"fileName":"assets/blocks_action-BQ4O7NRE.js","type":"chunk","isEntry":false,"size":11550},{"fileName":"assets/blocks_convert-0VBjfhqQ.js","type":"chunk","isEntry":false,"size":8711},{"fileName":"assets/blocks_logic-DAo99xDr.js","type":"chunk","isEntry":false,"size":3957},{"fileName":"assets/blocks_number-C--e19NU.js","type":"chunk","isEntry":false,"size":708},{"fileName":"assets/blocks_object-D0TPhdzg.js","type":"chunk","isEntry":false,"size":6459},{"fileName":"assets/blocks_procedures-DgTxgXdB.js","type":"chunk","isEntry":false,"size":9313},{"fileName":"assets/blocks_sendto-CRIrtOUc.js","type":"chunk","isEntry":false,"size":10976},{"fileName":"assets/blocks_switch-b_GYfF0n.js","type":"chunk","isEntry":false,"size":4637},{"fileName":"assets/blocks_system-BdkUdSsc.js","type":"chunk","isEntry":false,"size":22804},{"fileName":"assets/blocks_text-DSFhEVOf.js","type":"chunk","isEntry":false,"size":1734},{"fileName":"assets/blocks_time-CqALAiJp.js","type":"chunk","isEntry":false,"size":12616},{"fileName":"assets/blocks_timeout-yrOD2pZp.js","type":"chunk","isEntry":false,"size":5353},{"fileName":"assets/blocks_trigger-DeAYXpSS.js","type":"chunk","isEntry":false,"size":22890},{"fileName":"assets/blocks_words-bpwd7Ia0.js","type":"chunk","isEntry":false,"size":138581},{"fileName":"assets/cronHoverProvider-DoO2_tpG.js","type":"chunk","isEntry":false,"size":1964},{"fileName":"assets/dist-D4uJqRBO.js","type":"chunk","isEntry":false,"size":66971},{"fileName":"assets/docs-compact-D7rpMc7r.js","type":"chunk","isEntry":false,"size":13791},{"fileName":"assets/field_cron-D3Ts_s9M.js","type":"chunk","isEntry":false,"size":711},{"fileName":"assets/field_oid-BRNXredg.js","type":"chunk","isEntry":false,"size":9058},{"fileName":"assets/field_script-3X6ousg7.js","type":"chunk","isEntry":false,"size":1608},{"fileName":"assets/helpers-BTGaTdnT.js","type":"chunk","isEntry":false,"size":3107},{"fileName":"assets/iconLibraryData-B5fiyl1C.js","type":"chunk","isEntry":false,"size":250966},{"fileName":"assets/inlineChatWidget-BwQVCPkx.js","type":"chunk","isEntry":false,"size":6871},{"fileName":"assets/inlineDiffController-BsDDsDHn.js","type":"chunk","isEntry":false,"size":7302},{"fileName":"assets/loadBlocks-RpqM7PwO.js","type":"chunk","isEntry":false,"size":98231},{"fileName":"assets/loadMonaco-BVOEahNw.js","type":"chunk","isEntry":false,"size":650},{"fileName":"assets/reactour.esm-DX9ZgYlx.js","type":"chunk","isEntry":false,"size":80319},{"fileName":"assets/rolldown-runtime-C0FnF6B9.js","type":"chunk","isEntry":false,"size":1291},{"fileName":"assets/stateHoverProvider-BEadnSXp.js","type":"chunk","isEntry":false,"size":148842},{"fileName":"assets/vite-preload-helper-CaC3yEL3.js","type":"chunk","isEntry":false,"size":1265},{"fileName":"assets/Compile-B0uHjrBE.css","type":"asset","isEntry":false,"size":6802},{"fileName":"assets/FbEditor-B8S-mCvc.css","type":"asset","isEntry":false,"size":31599},{"fileName":"assets/RulesEditor-D3kTbD_T.css","type":"asset","isEntry":false,"size":15352},{"fileName":"assets/blockly2js-B3Jxf2e-.svg","type":"asset","isEntry":false,"size":8421},{"fileName":"assets/hysteresis-CLhhemcG.png","type":"asset","isEntry":false,"size":12163},{"fileName":"assets/index-BHhhebRG.css","type":"asset","isEntry":false,"size":1129},{"fileName":"assets/rules2js-DnYyR8mI.svg","type":"asset","isEntry":false,"size":6950},{"fileName":"assets/tileBlockly-BMpdinN3.png","type":"asset","isEntry":false,"size":12893},{"fileName":"assets/tileFbd-CWAy7R7m.svg","type":"asset","isEntry":false,"size":4551},{"fileName":"assets/tileJS-C48gYbHw.png","type":"asset","isEntry":false,"size":17266},{"fileName":"assets/tileRules-BkbaFIhs.png","type":"asset","isEntry":false,"size":83463},{"fileName":"assets/tileTS-CsXmgy4B.png","type":"asset","isEntry":false,"size":13415},{"fileName":"index.html","type":"asset","isEntry":false,"size":21411},{"fileName":"assets/mf-entry-bootstrap-0-0deef484.js","type":"asset","isEntry":false,"size":2162}],"assetAnalysis":{"react":{"js":{"sync":[],"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"]},"css":{"sync":[],"async":[]}},"react/jsx-runtime":{"js":{"sync":[],"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"]},"css":{"sync":[],"async":[]}},"prop-types":{"js":{"sync":[],"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"]},"css":{"sync":[],"async":[]}},"react-dom":{"js":{"sync":[],"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"]},"css":{"sync":[],"async":[]}},"@mui/material":{"js":{"sync":[],"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"]},"css":{"sync":[],"async":[]}},"@iobroker/gui-components":{"js":{"sync":[],"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"]},"css":{"sync":[],"async":[]}},"react-dom/client":{"js":{"sync":[],"async":["assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DVaMIZyC.js"]},"css":{"sync":[],"async":[]}}}}
@@ -1,7 +1,7 @@
1
- import{n as e,t}from"./assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-CiidVc0O.js";export{t as get,e as init};
1
+ import{t as e}from"./assets/vite-preload-helper-CaC3yEL3.js";import{a as t,t as n}from"./assets/dist-D4uJqRBO.js";({...t.global});var r=t.share;t.utils;var i={};typeof __VUE_HMR_RUNTIME__>`u`&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});var a=`__mf_init__virtual:mf:__mfe_internal__iobroker_javascript__mf_owner__180366418666083__mf_v__runtimeInit__mf_v__.js__`,o=globalThis[a];if(!o){let e,t,n=new Promise((n,r)=>{e=n,t=r});o=globalThis[a]={initPromise:n,initResolve:e,initReject:t}}var s=o.initResolve,c=`__mf_module_cache__`;globalThis[c]||={share:{},remote:{}},globalThis[c].share||={},globalThis[c].remote||={};var l=globalThis[c];for(let e of Object.keys(l.share))if(e.startsWith(`default:`)){let t=e.slice(8);l.share[t]===void 0&&(l.share[t]=l.share[e])}else if(!e.includes(`:`)){let t=`default:`+e;l.share[t]===void 0&&(l.share[t]=l.share[e])}var u={},d=Array.isArray(`default`)?`default`:[`default`],f=`default`,p=`iobroker_javascript`,m=[[`react`,`prop-types`],[`react/jsx-runtime`,`react-dom`],[`react-dom/client`,`@mui/material`],[`@iobroker/gui-components`]],h,g;async function _(e){for(let t=0;;t++)try{return await e()}catch(e){throw e}}var v=Symbol(`mf.originalSharedProvider`),y={emit:e=>e},b=(e,t)=>{if(t!==`version-first`)return e;let n={};for(let[t,r]of Object.entries(e))n[t]=Object.assign({},r,{[v]:r});return n},x=(e,t)=>{if(!t)return;let n=Object.entries(e||{}),r=n.find(([,e])=>e===t);if(r)return{version:r[0],provider:t,registered:!0};if(typeof t.version==`string`&&t.version)return{version:t.version,provider:t,registered:!1};let i=n.filter(([,e])=>e===t||!!(t.from&&(e==null?void 0:e.from)===t.from));if(i.length===1)return{version:i[0][0],provider:t,registered:!1}},S=(e,t,n,i)=>{var a;if(!e||!n)return;let o=Object.fromEntries(Object.entries(e).filter(([,e])=>{var t;return(e==null||(t=e.shareConfig)==null?void 0:t.import)!==!1}));if(Object.keys(o).length===0)return;let s=Array.isArray(n.scope)?n.scope:[n.scope||`default`],c=b(o,i),l={};for(let e of s)l[e||`default`]={[t]:c};let u=(a=r.getRegisteredShare(l,t,{...n,scope:s,strategy:i},y))==null?void 0:a.shared;return(u==null?void 0:u[v])||u},C=(e,t,n,r)=>{var i;let a=e=>w(e,n),o=Object.fromEntries(Object.entries(e||{}).filter(([,e])=>{var t;return!a(e)&&(e==null||(t=e.shareConfig)==null?void 0:t.import)!==!1}));n!=null&&n.version&&((i=n.shareConfig)==null?void 0:i.import)!==!1&&(o[n.version]||(o[n.version]=n));let s=S(o,t,n,r);return a(s)?void 0:s},w=(e,t)=>e===t||!!(t!=null&&t.from&&(e==null?void 0:e.from)===t.from),T=(e,t,n,r,i,a,o,s,c)=>{var l,u;if(c!==`version-first`||!s)return;let d=t==null||(l=t.options)==null||(l=l.shared)==null?void 0:l[i],f=Array.isArray(d)?d.find(e=>(e==null?void 0:e.version)===a):void 0,p=((s==null?void 0:s.from)===(t==null||(u=t.options)==null?void 0:u.name)?s:void 0)||(w(f,s)?f:t?void 0:s);if(p)return e.some(e=>{var i,a;return e!==t&&(e==null||(i=e.options)==null?void 0:i.name)===(o==null?void 0:o.from)&&(e==null||(a=e.shareScopeMap)==null?void 0:a[r])===n})?p:void 0},E=(e,t,n,r,i,a,o,s,c)=>{let l=a.registered?T(e,t,n,r,i,a.version,a.provider,s,c):void 0,u=l||o;if(u&&(!a.registered||w(u,s)))return{provider:u,scopeRootProvider:l}};async function D(){return h||=_(()=>e(()=>import(`./assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BnL93BgK.js`),[],import.meta.url)).catch(e=>{throw h=void 0,e}),h}async function O(){return i}async function k(e={},t=[],r={}){var i,a;let o=(e,t,n,r)=>{let i=(Array.isArray(r)?r[0]:r)||`default`,a=t||!n?e:e+`@`+n,o={canonical:i+`:`+a};return i==="default"&&(o.aliases=[a]),o},c=(e,t)=>{let n=e[t.canonical];if(n!==void 0)return n;let r=t.aliases||[];for(let n of r){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n];if(r!==void 0)return e[t.canonical]=r,r}},h=Symbol.for(`module-federation.shared-cache-listeners`),v=Symbol.for(`module-federation.shared-cache-owners`),y=e=>{let t=e[v];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,v,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},b=(e,t)=>{var n;return(n=e[v])==null?void 0:n[t.canonical]},T=(e,t,n,r)=>{var i;e[t.canonical]=n;let a=t.aliases||[];for(let t of a)Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0});let o=e[v];r===void 0?o&&delete o[t.canonical]:y(e)[t.canonical]=r;let s=(i=e[h])==null?void 0:i[t.canonical];if(s)for(let e of s)e(n);return n},O=Symbol.for(`module-federation.tree-shaking-shared-cache`),k=e=>{let t=e[O];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,O,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},A=(e,t,n,r)=>{if(!Array.isArray(n))return r;let i=[...new Set(n)].sort(),a=k(e),o=a[t.canonical]||=[],s=o.find(e=>e.providedExports.length===i.length&&e.providedExports.every((e,t)=>e===i[t]));return s?s.value=r:o.push({providedExports:i,value:r}),r},j=Symbol.for(`module-federation.tree-shaking-shared-selection-cache`),ee=e=>{let t=e[j];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,j,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},M=(e,t,n)=>{var r;let i=c(e,t);return i===void 0?(r=e[j])==null||(r=r[t.canonical])==null?void 0:r[n]:i},N=(e,t,n,r)=>{let i=ee(e),a=i[t.canonical]||=Object.create(null);return a[n]=r,r},P=((i=globalThis.__FEDERATION__)==null?void 0:i.__INSTANCES__)||[],F=(a=t.find(e=>e==null?void 0:e.from))==null?void 0:a.from,te=P.find(t=>{var n,r;return(t==null||(n=t.options)==null?void 0:n.name)===F&&(t==null||(r=t.shareScopeMap)==null?void 0:r.default)===e})||P.find(t=>{var n,r;return(t==null||(n=t.options)==null?void 0:n.name)!==p&&(t==null||(r=t.shareScopeMap)==null?void 0:r.default)===e}),I=Object.create(null),L=e=>{let t=Object.create(null);for(let[n,r]of Object.entries(e||{}))t[n]=Object.assign(Object.create(null),r);return t},R=(e,t)=>{var n;for(let[i,a]of Object.entries(((n=q.shareScopeMap)==null?void 0:n[e])||{}))for(let[e,n]of Object.entries(a||{})){var r;if(!n||n.get===((r=B[i])==null?void 0:r.get))continue;let a=t[i]||={};a[e]===void 0&&(a[e]=n)}},ne=(e,t)=>{R(e,t);let n=!te&&Object.values(t||{}).some(e=>Object.values(e||{}).some(V)),r=n?L(t):t;return I[e]={host:t,runtime:r,isWebpackScope:n},r},re=()=>{let e=Object.values(I).filter(({isWebpackScope:e})=>e);if(e.length!==0)for(let{host:t,runtime:n}of e)for(let[e,r]of Object.entries(t||{})){let t=n[e]||=Object.create(null);for(let[e,n]of Object.entries(r||{}))t[e]=n}},z=Object.create(null);for(let[t,n]of Object.entries(e)){let e=z[t]=Object.create(null);for(let[t,r]of Object.entries(n))e[t]=Object.assign({},r)}let{usedShared:B,usedRemotes:ie}=await D();function V(e){if(typeof(e==null?void 0:e.get)!=`function`)return!1;let t=Function.prototype.toString.call(e.get);return t.includes(`__webpack_require__`)||/\.\s*e\s*\([^)]*\)\s*\.then\s*\(/.test(t)}let ae=Object.values(z).some(e=>Object.values(e||{}).some(V)),oe=e=>{let t=e.split(`/`);return e.startsWith(`@`)?t.slice(0,2).join(`/`):t[0]},H=(t,n,r,i)=>{if(typeof C!=`function`)return;let a=oe(t),o=!i||a===t?[[t,n]]:[[t,n],[a,B[a]]];for(let[n,i]of o){if(!i)continue;let a=C(r?n===t?r:z[n]:z[n]??e[n],n,i,`version-first`);if(a)return a}},se=(e,t,n)=>{let r=H(e,t,n,!0);return r&&V(r)&&!r.lib&&!r.loaded?r:void 0};var U=u[f];if(U||=u[f]={from:p},t.indexOf(U)>=0)return;t.push(U);let ce=e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},le=[],ue=globalThis.window===void 0?await Promise.all([]):[],W=`__mf_vite_runtime_share_load_id__`,de=0,G=new Map,K=new Map,q=n({name:p,remotes:ie,shared:B,plugins:[fe(),pe(),...le,...ue],shareStrategy:`version-first`});q.initShareScopeMap(`default`,ne(`default`,e));function fe(){return{name:`vite-share-pin-lifecycle-plugin`,resolveShare(e){var t;let n=(t=e.shareInfo)==null?void 0:t[W],r=n===void 0?void 0:K.get(n);if(!r)return e;let i=e.resolver;return e.resolver=(...e)=>(r.pinned.reapply(),i(...e)),r.pinned.reveal(),e}}}function pe(){return{name:`vite-real-name-snapshot-plugin`,afterLoadSnapshot(e){let t=e&&e.remoteSnapshot,n=t&&t.globalName,r=t&&t.version;if(!n||!r||!t.remoteEntry)return e;let i=globalThis.__FEDERATION__&&globalThis.__FEDERATION__.moduleInfo,a=n+`:`+r;return i&&!i[a]&&(i[a]=t),e}}}let me=q.sharedHandler.hooks.lifecycle.resolveShare,J=new WeakMap;me.on(e=>{var t;let n=(t=e.shareInfo)==null?void 0:t[W],r=e.resolver;return typeof r==`function`&&(e.resolver=(...e)=>{let t=r(...e),i=t==null?void 0:t.shared;return i&&(typeof i==`object`||typeof i==`function`)&&!J.has(i)&&J.set(i,{from:i.from}),n!==void 0&&i&&G.set(n,i),t}),e});let he=(e,t,n,r)=>{if(!e||e[t]!==n)return;let i=Object.assign({},r,{version:r.version??t,scope:r.scope??(n==null?void 0:n.scope)??[`default`],strategy:`loaded-first`}),a=r.from;e[t]=i;let o=()=>n===void 0?e[t]===void 0:e[t]===n;return{provider:i,reveal(){return e[t]===i&&(n===void 0?delete e[t]:e[t]=n,!0)},reapply(){return o()?(e[t]=i,!0):!1},release(s,c=!0){return r.from=a,e[t]===i?c?s?(i.from=a,s&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete e[t]:e[t]=n,!1):(n===void 0?delete e[t]:e[t]=n,!0):!c&&o()}}},ge=e=>Object.entries(e||{}).map(([e,t])=>({provider:t,version:e,from:t.from,registered:!0})),_e=(e,t)=>{if(t===void 0)return;let n;for(let r of e){let e=r.provider,i=e.treeShaking||e;if(r.loadedFactory===t||e.lib===t||i.lib===t){if(n)return;n=r}}return n},ve=async(e,t,n)=>{let r=++de;K.set(r,{pinned:n});try{let n=await q.loadShare(e,{customShareInfo:{shareConfig:t,[W]:r}});return{factory:n===!1?void 0:n,selectedProvider:G.get(r)}}finally{G.delete(r),K.delete(r)}},ye=async(e,t,n,r,i,a,o=!0)=>{let s=a.from,c=he(n,r,i,a);if(!c)return;let l;try{l=await ve(e,t,c)}catch(e){throw c.release(!1),e}let u=l==null?void 0:l.factory;if(u===void 0){c.release(!1);return}let d=ge(n),f=c.provider.treeShaking||c.provider,p=c.provider.lib===u||f.lib===u;if(!o&&p){let e=d.findIndex(e=>e.provider===c.provider);e!==-1&&d.splice(e,1)}!o&&!d.some(e=>e.provider===a)&&d.push({provider:a,version:r,from:s,registered:!1,loadedFactory:p?u:void 0});let m=!o&&l.selectedProvider===c.provider&&p?a:l.selectedProvider;if(m&&!d.some(e=>e.provider===m)){let e=J.get(m),t=typeof m.version==`string`&&m.version?m.version:r;d.push({provider:m,version:t,from:e?e.from:m.from,registered:(n==null?void 0:n[t])===m,loadedFactory:u})}let h=d.find(e=>e.provider===m)??_e(d,u);if(!c.release(!0,(h==null?void 0:h.provider)===c.provider)||!h)return;let g=J.get(h.provider);h.from=h.provider===a?s:g?g.from:h.provider.from,g&&(h.provider.from=g.from);let _=typeof u==`function`?u():u,v=await Promise.resolve(_);if(!(h.registered&&(n==null?void 0:n[h.version])!==h.provider))return{provider:h.provider,selection:h,resolved:v}},Y=new Set,X=new Map,be=async(t,n,r)=>{var i;let a=!!((i=n.shareConfig)!=null&&i.singleton);if(!a&&n.canLiveRebind!==!1)try{var s,u;let i=C(r,t,n,`version-first`),d=x(r,i);if(!d||((s=n.shareConfig)==null?void 0:s.import)===!1&&w(i,n)||(i==null||(u=i.shareConfig)==null?void 0:u.import)===!1)return;let{version:f}=d;if(!a&&f!==n.version||!i.lib&&!i.loading&&!(i.loaded&&typeof i.get==`function`))return;let p=o(t,a,n.version,n.scope);if(c(l.share,p)!==void 0)return;let m=e[t],h=m==null?void 0:m[f];if(d.registered&&!w(h,i))return;let g,_=i.lib;if(!_&&V(i)||(!_&&i.loading&&(_=await i.loading),!_&&i.loaded&&typeof i.get==`function`&&(_=await i.get()),!_))return;let v=typeof _==`function`?_():_,y=await Promise.resolve(v),b=d.registered?h:i;g={provider:b,selection:{provider:b,version:f,from:i.from,registered:d.registered},resolved:y};let S=g==null?void 0:g.provider,E=g==null?void 0:g.selection;if(!E)return;let D=g==null?void 0:g.resolved;if(D===void 0||c(l.share,p)!==void 0||E.registered&&(m==null?void 0:m[E.version])!==S)return;T(l.share,p,ce(D),E.from),Y.add(S)}catch(e){console.error(`[Module Federation] Failed to bridge materialized shared module "`+t+`"`,e)}},xe=async(t,n,r,i,a)=>{try{var s,u,d,f;let m=o(t,(s=n.shareConfig)==null?void 0:s.singleton,n.version,n.scope),h=c(l.share,m),g=b(l.share,m),_=C(r,t,n,`version-first`),v=_||S(r,t,n,`version-first`)||n,y=x(r,v);if(!y)return;let D=w(v,n),{version:O}=y;if(!((u=n.shareConfig)!=null&&u.singleton)&&O!==n.version)return;let k=i==null?void 0:i[O],A=E(P,te,e,`default`,t,y,_,k,`version-first`);if(!A&&!D)return;let{provider:j,scopeRootProvider:ee}=A||{provider:v,scopeRootProvider:void 0};if(n.canLiveRebind===!1||((d=n.shareConfig)==null?void 0:d.import)===!1&&w(j,n)||(j==null||(f=j.shareConfig)==null?void 0:f.import)===!1||h!==void 0&&g!==p)return;let M=e[t],N=M==null?void 0:M[O];if(y.registered&&!ee&&!w(N,j))return;let F=await ye(t,n.shareConfig,M,O,N,j,y.registered&&!D),I=F==null?void 0:F.provider,L=F==null?void 0:F.selection;if(!L||w(I,n)||a&&(a.version!==L.version||!w({from:L.from},a.provider))||Y.has(I))return;let R=F==null?void 0:F.resolved;if(R===void 0)return;let ne=c(l.share,m),re=b(l.share,m);if(ne!==void 0&&re!==p||L.registered&&(M==null?void 0:M[L.version])!==I)return;a||X.set(t,{version:L.version,provider:{from:L.from}}),Y.add(I);let z=ce(R);T(l.share,m,z,L.from)}catch(e){console.error(`[Module Federation] Failed to bridge external shared module "`+t+`"`,e)}};for(let e of m)await Promise.all(e.map(async e=>{let t=B[e];t&&t.materialize!==!1&&!t.treeShaking&&await be(e,t,z[e])}));for(let[e,t]of Object.entries(B)){var Se;if(t.treeShaking)continue;let n=o(e,(Se=t.shareConfig)==null?void 0:Se.singleton,t.version,t.scope);if(c(l.share,n)!==void 0)continue;let r=o(e,!0,t.version,t.scope),i=c(l.share,r);i!==void 0&&T(l.share,n,i,b(l.share,r))}let Ce=[`react`,`prop-types`,`react/jsx-runtime`,`react-dom`,`react-dom/client`,`@mui/material`,`@iobroker/gui-components`],we=[[`react`,`prop-types`],[`react/jsx-runtime`,`react-dom`],[`react-dom/client`,`@mui/material`],[`@iobroker/gui-components`]],Z=new Map(Ce.map((e,t)=>[e,t])),Te={2:[0],3:[0],4:[0,3],5:[1,0,3],6:[0,3,5]},Q=Ce.filter(e=>{var t;return B[e]&&(B[e].materialize!==!1||((t=B[e].shareConfig)==null?void 0:t.import)===!1)});l.providerInit||=new Map;let Ee=(e,t)=>{let n=l.providerInit.get(e);if(n)return n;let r=Promise.resolve().then(t);return l.providerInit.set(e,r),r.catch(()=>l.providerInit.delete(e)),r};var De=async e=>{let t=new Set(e);for(let e of we)await Promise.all(e.filter(e=>t.has(e)).map(async e=>{var t,n;let r=B[e],i=o(e,(t=r.shareConfig)==null?void 0:t.singleton,r.version,r.scope);if(((n=r.shareConfig)==null?void 0:n.import)===!1||r.treeShaking||c(l.share,i)!==void 0)return;let a=o(e,!0,r.version,r.scope),s=c(l.share,a);if(s!==void 0){T(l.share,i,s,b(l.share,a));return}let u=typeof H==`function`?H(e,r):void 0;if(u){let e=u.lib;if(!e&&u.loading&&(e=await u.loading),!e&&u.loaded&&typeof u.get==`function`&&(e=await u.get()),e){let t=typeof e==`function`?e():e,n=await Promise.resolve(t);T(l.share,i,(e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t})(n),u.from)}return}let d=i.canonical,f=await Ee(d,async()=>{let e=await r.get(),t=typeof e==`function`?e():e;return Promise.resolve(t)}),m=(e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t})(f),h=m===f?{...f}:m;h.__esModule!==!0&&Object.defineProperty(h,"__esModule",{value:!0,enumerable:!1}),T(l.share,i,h,p)}))};let Oe=e=>{var t,n;let r=B[e];if(!r.treeShaking&&((t=r.shareConfig)==null?void 0:t.import)!==!1)return!1;let i=o(e,(n=r.shareConfig)==null?void 0:n.singleton,r.version,r.scope);return r.treeShaking?M(l.share,i,p)===void 0&&c(l.share,i)===void 0:c(l.share,i)===void 0},ke=e=>{var t,n;let r=B[e],i=o(e,(t=r.shareConfig)==null?void 0:t.singleton,r.version,r.scope);return(r.treeShaking?M(l.share,i,p)??c(l.share,i):c(l.share,i))===void 0?r.treeShaking||((n=r.shareConfig)==null?void 0:n.import)===!1?!0:typeof C==`function`&&!!C(z[e],e,r,`version-first`):!1},Ae=e=>{let t=!0;for(;t;){t=!1;for(let n of Q){let r=Z.get(n);e.has(r)||(Te[r]||[]).some(t=>e.has(t))&&(e.add(r),t=!0)}}return e},je=Ae(new Set(Q.filter(ke).map(e=>Z.get(e)))),Me=Q.filter(e=>!je.has(Z.get(e)));var Ne=Q.filter(e=>je.has(Z.get(e)));await De(Me);try{await _(async()=>{await Promise.all(await q.initializeSharing(`default`,{strategy:`version-first`,from:`build`,initScope:t}))})}catch(e){console.error(`[Module Federation]`,e)}re();let Pe=async()=>{for(let t of m)await Promise.all(t.map(async t=>{let n=B[t];n&&n.materialize!==!1&&!n.treeShaking&&await xe(t,n,e[t],z[t],void 0)}))};await Pe(),ae&&(g=Pe);try{var Fe;let e=(Fe=globalThis.__FEDERATION__)==null?void 0:Fe.__SHARE__,t=Object.create(null);if(e)for(let[,n]of Object.entries(e))for(let e of d){let r=n==null?void 0:n[e];if(r)for(let[e,n]of Object.entries(r)){let r=B==null?void 0:B[e],i=z[e],a=X.get(e);if(!r||!i||!a||r.treeShaking)continue;let o=t[e]||(t[e]=Object.create(null));for(let[e,t]of Object.entries(n)){if(!t.lib||a.version!==e||!w(t,a.provider))continue;let n=i[e];(t===n||n!=null&&n.from&&t.from===n.from)&&(t===r||r.from&&t.from===r.from||o[e]===void 0&&(o[e]=t))}}}for(let e of m)await Promise.all(e.map(async e=>{let n=t[e];n&&await xe(e,B[e],n,z[e],X.get(e))}))}catch(e){console.error(`[Module Federation] Failed to bridge external shared modules`,e)}let Ie=async()=>{},Le=async(t,n)=>{var r,i;let a=o(t,(r=n.shareConfig)==null?void 0:r.singleton,n.version,n.scope),s=n.treeShaking?M(l.share,a,p):c(l.share,a);if(((i=n.shareConfig)==null?void 0:i.import)!==!1||s!==void 0||se(t,n,z[t]))return;let u=e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},d=e==null?void 0:e[t],f=S(d,t,n,`version-first`)||n,m=x(d,f);if(!m)return;let h=e=>{var t;return e===n||(e==null||(t=e.shareConfig)==null?void 0:t.import)===!1};if(h(f))return;let{version:g}=m,_=d==null?void 0:d[g],v=await ye(t,n.shareConfig,d,g,_,f,m.registered),y=v==null?void 0:v.selection,b=v==null?void 0:v.provider,C=v==null?void 0:v.resolved;if(!y||h(b)||C===void 0||(n.treeShaking?M(l.share,a,p):c(l.share,a))!==void 0||y.registered&&(d==null?void 0:d[y.version])!==b)return;let w=u(C);if(n.treeShaking){let e=n.treeShaking.providedExports??n.treeShaking.usedExports??[];A(l.share,a,e,w),N(l.share,a,p,w)}else T(l.share,a,w,y.from)},Re=[],$=new Set;for(let e of Ne){let t=B[e],n=Z.get(e);if(Oe(e))try{var ze;t.treeShaking?await Ie(e,t):((ze=t.shareConfig)==null?void 0:ze.import)===!1&&await Le(e,t)}catch(t){console.error(`[Module Federation] Failed to resolve runtime-only shared module "${e}"`,t)}Oe(e)&&$.add(n)}return Ae($),Re.push(...Ne.filter(e=>!$.has(Z.get(e)))),await De(Re),s(q),q}async function A(e){let t=await O();if(!(e in t))throw Error(`[Module Federation] Module ${e} does not exist in container.`);return g&&await g(),l.pendingShareLoads&&await Promise.all(l.pendingShareLoads),t[e]().then(e=>()=>e)}export{A as get,k as init};
2
2
  if (typeof document !== 'undefined' && document.head) {
3
3
  try {
4
- for (const __mfWarmupPath of ["assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-CiidVc0O.js","assets/virtualExposes-DgGB-18P.js","assets/virtual_mf-exposes___mfe_internal__iobroker_javascript__remoteEntry_js-ChiJXsfH.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BMAFQFoH.js","assets/dist-D4uJqRBO.js","assets/vite-preload-helper-CaC3yEL3.js"]) {
4
+ for (const __mfWarmupPath of ["assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BnL93BgK.js","assets/vite-preload-helper-CaC3yEL3.js","assets/dist-D4uJqRBO.js"]) {
5
5
  const __mfWarmupLink = document.createElement('link');
6
6
  __mfWarmupLink.rel = 'modulepreload';
7
7
  __mfWarmupLink.crossOrigin = '';
package/admin/tab.html CHANGED
@@ -27,12 +27,9 @@
27
27
 
28
28
  <script type="text/javascript" onerror="setTimeout(function(){window.location.reload()}, 5000)" src="./../../lib/js/socket.io.js"></script>
29
29
  <title>Scripts</title>
30
- <script type="module" crossorigin src="./assets/mf-entry-bootstrap-0-019228a5.js"></script>
31
- <link rel="modulepreload" crossorigin href="./assets/Import-XKVP-nRT.js">
32
- <link rel="modulepreload" crossorigin href="./assets/Error-Ch2nx5uC.js">
33
- <link rel="modulepreload" crossorigin href="./assets/blockly-fcfyKYzp.js">
34
- <link rel="stylesheet" crossorigin href="./assets/index-CXaeqPRy.css">
35
- <link rel="modulepreload" crossorigin href="./assets/hostInit-Bs-bStPF.js"><link rel="modulepreload" crossorigin href="./assets/index-B0FfAYMN.js"><link rel="modulepreload" crossorigin href="./assets/virtualExposes-DgGB-18P.js"><link rel="modulepreload" crossorigin href="./remoteEntry.js"><link rel="modulepreload" crossorigin href="./assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BMAFQFoH.js"><link rel="modulepreload" crossorigin href="./assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-CiidVc0O.js"><link rel="modulepreload" crossorigin href="./assets/virtual_mf-exposes___mfe_internal__iobroker_javascript__remoteEntry_js-ChiJXsfH.js"><link rel="modulepreload" crossorigin href="./assets/vite-preload-helper-CaC3yEL3.js"><link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-C0FnF6B9.js"><link rel="modulepreload" crossorigin href="./assets/dist-D4uJqRBO.js"><link rel="modulepreload" crossorigin href="./assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-D-gi6Mty.js"><link rel="modulepreload" crossorigin href="./assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__113183188387379__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CDctpiPx.js"></head>
30
+ <script type="module" crossorigin src="./assets/mf-entry-bootstrap-0-0deef484.js"></script>
31
+ <link rel="stylesheet" crossorigin href="./assets/index-BHhhebRG.css">
32
+ <link rel="modulepreload" crossorigin href="./assets/hostInit-2h2Cbsaw.js"><link rel="modulepreload" crossorigin href="./assets/index-CbQlIKB_.js"><link rel="modulepreload" crossorigin href="./remoteEntry.js"><link rel="modulepreload" crossorigin href="./assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-BnL93BgK.js"><link rel="modulepreload" crossorigin href="./assets/vite-preload-helper-CaC3yEL3.js"><link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-C0FnF6B9.js"><link rel="modulepreload" crossorigin href="./assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-NI-3Uv4e.js"><link rel="modulepreload" crossorigin href="./assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__180366418666083__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DVaMIZyC.js"><link rel="modulepreload" crossorigin href="./assets/dist-D4uJqRBO.js"></head>
36
33
  <body>
37
34
  <noscript> You need to enable JavaScript to run this app. </noscript>
38
35
  <script>
@@ -486,6 +483,5 @@
486
483
  custom="PROCEDURE"
487
484
  ></category>
488
485
  </xml>
489
- <script type="text/javascript" src="vs/loader.js"></script><script type="text/javascript" src="vs/configure.js"></script>
490
486
  </body>
491
487
  </html>
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatIssue = formatIssue;
4
+ exports.analyzeGraph = analyzeGraph;
5
+ const graph_1 = require("./graph");
6
+ const js_1 = require("./js");
7
+ const library_1 = require("./library");
8
+ const user_1 = require("./user");
9
+ /**
10
+ * Strongly connected components (Tarjan). A component of one node only counts as a loop when the
11
+ * node feeds itself - the caller checks that.
12
+ */
13
+ function findComponents(ids, edges) {
14
+ let index = 0;
15
+ const indices = new Map();
16
+ const lowLinks = new Map();
17
+ const stack = [];
18
+ const onStack = new Set();
19
+ const components = [];
20
+ const visit = (id) => {
21
+ indices.set(id, index);
22
+ lowLinks.set(id, index);
23
+ index++;
24
+ stack.push(id);
25
+ onStack.add(id);
26
+ for (const next of edges.get(id) || []) {
27
+ if (!indices.has(next)) {
28
+ visit(next);
29
+ lowLinks.set(id, Math.min(lowLinks.get(id), lowLinks.get(next)));
30
+ }
31
+ else if (onStack.has(next)) {
32
+ lowLinks.set(id, Math.min(lowLinks.get(id), indices.get(next)));
33
+ }
34
+ }
35
+ if (lowLinks.get(id) === indices.get(id)) {
36
+ const component = [];
37
+ let member;
38
+ do {
39
+ member = stack.pop();
40
+ onStack.delete(member);
41
+ component.push(member);
42
+ } while (member !== id);
43
+ components.push(component);
44
+ }
45
+ };
46
+ ids.forEach(id => !indices.has(id) && visit(id));
47
+ return components;
48
+ }
49
+ function isLoop(component, edges) {
50
+ return component.length > 1 || !!edges.get(component[0])?.has(component[0]);
51
+ }
52
+ function buildEdges(ids, links, skip) {
53
+ const edges = new Map(ids.map(id => [id, new Set()]));
54
+ for (const link of links) {
55
+ if (!skip?.(link)) {
56
+ edges.get(link.from[0])?.add(link.to[0]);
57
+ }
58
+ }
59
+ return edges;
60
+ }
61
+ /** A pin name becomes a property of the instance next to `run()` */
62
+ const PIN_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
63
+ const RESERVED_PINS = ['run', 'self', 'constructor', 'prototype', '__proto__'];
64
+ function formatIssue(issue) {
65
+ let index = 0;
66
+ return issue.message.replace(/%s/g, () => issue.args?.[index++] ?? '');
67
+ }
68
+ /** Checks a user block once per analysis; its errors become one error of the instance */
69
+ function checkUserBlock(user, options) {
70
+ if (options.visiting.has(user.type)) {
71
+ return 'The block %s contains itself';
72
+ }
73
+ let analysis = options.cache.get(user.type);
74
+ if (!analysis) {
75
+ options.visiting.add(user.type);
76
+ analysis = analyzeGraph(user.graph, { ...options, isBlock: true });
77
+ options.visiting.delete(user.type);
78
+ options.cache.set(user.type, analysis);
79
+ }
80
+ return analysis.issues.some(issue => issue.severity === 'error') ? 'The block %s has errors: %s' : null;
81
+ }
82
+ /**
83
+ * Checks a diagram and works out the execution order.
84
+ *
85
+ * The order follows the data flow. A loop is only allowed when it runs through a block with a
86
+ * state (a timer, a flip-flop, a user block, ...): the link that leads back reads what that block
87
+ * put out in the previous cycle, as in any SPS. A loop without such a block has no solution and is
88
+ * an error.
89
+ */
90
+ function analyzeGraph(graph, analyzeOptions) {
91
+ const options = {
92
+ userBlocks: analyzeOptions?.userBlocks || graph.userBlocks || {},
93
+ isBlock: analyzeOptions?.isBlock ?? !!graph.block,
94
+ visiting: analyzeOptions?.visiting || new Set(graph.block ? [graph.block.type] : []),
95
+ cache: analyzeOptions?.cache || new Map(),
96
+ };
97
+ const issues = [];
98
+ const nodes = new Map();
99
+ if (graph.block && !user_1.FB_USER_TYPE_PATTERN.test(graph.block.type)) {
100
+ issues.push({ severity: 'error', message: 'Invalid block type %s', args: [graph.block.type] });
101
+ }
102
+ const pins = new Set();
103
+ for (const block of graph.blocks) {
104
+ if (!graph_1.FB_ID_PATTERN.test(block.id || '')) {
105
+ issues.push({ severity: 'error', message: 'Invalid block ID %s', args: [String(block.id)] });
106
+ continue;
107
+ }
108
+ if (nodes.has(block.id)) {
109
+ issues.push({ severity: 'error', message: 'Duplicate block ID %s', args: [block.id], blockId: block.id });
110
+ continue;
111
+ }
112
+ const def = (0, library_1.getBlockDef)(block.type, options.userBlocks);
113
+ if (!def) {
114
+ issues.push({ severity: 'error', message: 'Unknown block type %s', args: [block.type], blockId: block.id });
115
+ continue;
116
+ }
117
+ nodes.set(block.id, { block, def });
118
+ for (const param of def.params || []) {
119
+ const value = block.params?.[param.id] ?? param.default;
120
+ if (param.required && (value === undefined || value === null || value === '')) {
121
+ issues.push({
122
+ severity: 'error',
123
+ message: 'Parameter "%s" is not set',
124
+ args: [param.id],
125
+ blockId: block.id,
126
+ });
127
+ }
128
+ }
129
+ if (def.category === 'interface') {
130
+ if (!options.isBlock) {
131
+ issues.push({
132
+ severity: 'error',
133
+ message: 'Inputs and outputs of a block only work in the diagram of a block',
134
+ blockId: block.id,
135
+ });
136
+ }
137
+ const pin = String(block.params?.pin ?? '');
138
+ if (pin && (!PIN_NAME.test(pin) || RESERVED_PINS.includes(pin))) {
139
+ issues.push({ severity: 'error', message: 'Invalid pin name %s', args: [pin], blockId: block.id });
140
+ }
141
+ else if (pin && pins.has(pin)) {
142
+ issues.push({
143
+ severity: 'error',
144
+ message: 'The pin name %s is used twice',
145
+ args: [pin],
146
+ blockId: block.id,
147
+ });
148
+ }
149
+ pins.add(pin);
150
+ }
151
+ else if (options.isBlock && (block.type === 'STATE_IN' || block.type === 'STATE_OUT')) {
152
+ issues.push({
153
+ severity: 'error',
154
+ message: 'A block cannot read or write states - give it inputs and outputs instead',
155
+ blockId: block.id,
156
+ });
157
+ }
158
+ if (def.user) {
159
+ const problem = checkUserBlock(def.user, options);
160
+ if (problem) {
161
+ const inner = options.cache.get(def.user.type)?.issues.find(issue => issue.severity === 'error');
162
+ issues.push({
163
+ severity: 'error',
164
+ message: problem,
165
+ args: inner ? [def.user.name, formatIssue(inner)] : [def.user.name],
166
+ blockId: block.id,
167
+ });
168
+ }
169
+ }
170
+ if (block.type === 'JS') {
171
+ const problem = (0, js_1.checkJsCode)((0, js_1.jsCode)(block, def), (0, js_1.jsParameters)(block, def));
172
+ if (problem) {
173
+ issues.push({
174
+ severity: 'error',
175
+ message: 'The code has an error: %s',
176
+ args: [problem],
177
+ blockId: block.id,
178
+ });
179
+ }
180
+ }
181
+ }
182
+ // links: both ends must exist, the types must fit, and an input takes one signal only
183
+ const links = [];
184
+ const driven = new Set();
185
+ for (const link of graph.links) {
186
+ const from = nodes.get(link.from[0]);
187
+ const to = nodes.get(link.to[0]);
188
+ const output = from && (0, graph_1.getOutputs)(from.block, from.def).find(pin => pin.id === link.from[1]);
189
+ const input = to && (0, graph_1.getInputs)(to.block, to.def).find(pin => pin.id === link.to[1]);
190
+ if (!output || !input) {
191
+ issues.push({
192
+ severity: 'error',
193
+ message: 'The connection refers to a missing block or pin',
194
+ linkId: link.id,
195
+ blockId: to ? link.to[0] : from ? link.from[0] : undefined,
196
+ });
197
+ continue;
198
+ }
199
+ if (!(0, graph_1.isCompatible)(output.type, input.type)) {
200
+ issues.push({
201
+ severity: 'error',
202
+ message: 'Types do not match: %s cannot be connected to %s',
203
+ args: [output.type, input.type],
204
+ linkId: link.id,
205
+ blockId: link.to[0],
206
+ });
207
+ continue;
208
+ }
209
+ const key = `${link.to[0]}.${link.to[1]}`;
210
+ if (driven.has(key)) {
211
+ issues.push({
212
+ severity: 'error',
213
+ message: 'Input %s is connected more than once',
214
+ args: [link.to[1]],
215
+ linkId: link.id,
216
+ blockId: link.to[0],
217
+ });
218
+ continue;
219
+ }
220
+ driven.add(key);
221
+ links.push(link);
222
+ }
223
+ // Loops: inside a loop, the links that start at a block with a state may lead back. Whatever
224
+ // is still a loop without them has no block to take the value of the previous cycle from.
225
+ const ids = [...nodes.keys()];
226
+ const allEdges = buildEdges(ids, links);
227
+ const inLoop = new Map();
228
+ findComponents(ids, allEdges)
229
+ .filter(component => isLoop(component, allEdges))
230
+ .forEach((component, i) => component.forEach(id => inLoop.set(id, i)));
231
+ const breakable = (link) => !!nodes.get(link.from[0])?.def.stateful &&
232
+ inLoop.has(link.from[0]) &&
233
+ inLoop.get(link.from[0]) === inLoop.get(link.to[0]);
234
+ const orderEdges = buildEdges(ids, links, breakable);
235
+ for (const component of findComponents(ids, orderEdges)) {
236
+ if (isLoop(component, orderEdges)) {
237
+ const names = component
238
+ .map(id => nodes.get(id).block)
239
+ .sort(byPosition)
240
+ .map(block => block.name || block.id);
241
+ issues.push({
242
+ severity: 'error',
243
+ message: 'Loop without a block that stores a value: %s',
244
+ args: [names.join(', ')],
245
+ blockIds: component,
246
+ });
247
+ }
248
+ }
249
+ // topological order; blocks that are ready at the same time run from left to right, then top down
250
+ const incoming = new Map(ids.map(id => [id, 0]));
251
+ orderEdges.forEach(targets => targets.forEach(id => incoming.set(id, incoming.get(id) + 1)));
252
+ const ready = ids.filter(id => !incoming.get(id));
253
+ const sequence = [];
254
+ while (ready.length) {
255
+ ready.sort((a, b) => byPosition(nodes.get(a).block, nodes.get(b).block));
256
+ const id = ready.shift();
257
+ sequence.push(id);
258
+ for (const next of orderEdges.get(id)) {
259
+ const count = incoming.get(next) - 1;
260
+ incoming.set(next, count);
261
+ if (!count) {
262
+ ready.push(next);
263
+ }
264
+ }
265
+ }
266
+ // blocks of an unsolvable loop still get a number, so the editor can show one
267
+ ids.filter(id => !sequence.includes(id))
268
+ .sort((a, b) => byPosition(nodes.get(a).block, nodes.get(b).block))
269
+ .forEach(id => sequence.push(id));
270
+ const order = {};
271
+ sequence.forEach((id, i) => (order[id] = (i + 1) * 10));
272
+ const feedback = links.filter(link => order[link.from[0]] >= order[link.to[0]]).map(link => link.id);
273
+ const timeDependent = [...nodes.values()].some(node => node.def.timeDependent);
274
+ const mode = graph.cycle.mode === 'auto' ? (timeDependent ? 'cyclic' : 'event') : graph.cycle.mode;
275
+ const ms = Math.max(graph_1.FB_CYCLE_MIN_MS, Math.min(graph_1.FB_CYCLE_MAX_MS, Math.round(Number(graph.cycle.ms) || graph_1.FB_CYCLE_DEFAULT_MS)));
276
+ // the mode of a block is the one of the diagram it is used in
277
+ if (mode === 'event' && timeDependent && !options.isBlock) {
278
+ issues.push({
279
+ severity: 'warning',
280
+ message: 'Timers need the cyclic mode, in the event mode they only run when an input changes',
281
+ });
282
+ }
283
+ return { issues, order, feedback, links, mode, ms };
284
+ }
285
+ function byPosition(a, b) {
286
+ return a.pos[0] - b.pos[0] || a.pos[1] - b.pos[1] || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0);
287
+ }
288
+ //# sourceMappingURL=analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/lib/fb/analyze.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n FB_CYCLE_DEFAULT_MS,\n FB_CYCLE_MAX_MS,\n FB_CYCLE_MIN_MS,\n FB_ID_PATTERN,\n getInputs,\n getOutputs,\n isCompatible,\n} from './graph';\nimport { checkJsCode, jsCode, jsParameters } from './js';\nimport { getBlockDef } from './library';\nimport type { FbBlock, FbBlockDef, FbGraph, FbIssue, FbLink, FbUserBlock } from './types';\nimport { FB_USER_TYPE_PATTERN } from './user';\n\nexport interface FbAnalysis {\n issues: FbIssue[];\n /** Position of each block in the execution order: 10, 20, 30, ... */\n order: Record<string, number>;\n /** The links that carry the value of the previous cycle, because they lead back in the order */\n feedback: string[];\n /** The links that can be turned into code, in the order of `graph.links` */\n links: FbLink[];\n /** How the diagram runs: `auto` resolved */\n mode: 'cyclic' | 'event';\n /** Interval of the cyclic mode in ms */\n ms: number;\n}\n\ninterface Node {\n block: FbBlock;\n def: FbBlockDef;\n}\n\n/**\n * Strongly connected components (Tarjan). A component of one node only counts as a loop when the\n * node feeds itself - the caller checks that.\n */\nfunction findComponents(ids: string[], edges: Map<string, Set<string>>): string[][] {\n let index = 0;\n const indices = new Map<string, number>();\n const lowLinks = new Map<string, number>();\n const stack: string[] = [];\n const onStack = new Set<string>();\n const components: string[][] = [];\n\n const visit = (id: string): void => {\n indices.set(id, index);\n lowLinks.set(id, index);\n index++;\n stack.push(id);\n onStack.add(id);\n\n for (const next of edges.get(id) || []) {\n if (!indices.has(next)) {\n visit(next);\n lowLinks.set(id, Math.min(lowLinks.get(id)!, lowLinks.get(next)!));\n } else if (onStack.has(next)) {\n lowLinks.set(id, Math.min(lowLinks.get(id)!, indices.get(next)!));\n }\n }\n\n if (lowLinks.get(id) === indices.get(id)) {\n const component: string[] = [];\n let member: string;\n do {\n member = stack.pop()!;\n onStack.delete(member);\n component.push(member);\n } while (member !== id);\n components.push(component);\n }\n };\n\n ids.forEach(id => !indices.has(id) && visit(id));\n return components;\n}\n\nfunction isLoop(component: string[], edges: Map<string, Set<string>>): boolean {\n return component.length > 1 || !!edges.get(component[0])?.has(component[0]);\n}\n\nfunction buildEdges(ids: string[], links: FbLink[], skip?: (link: FbLink) => boolean): Map<string, Set<string>> {\n const edges = new Map<string, Set<string>>(ids.map(id => [id, new Set<string>()]));\n for (const link of links) {\n if (!skip?.(link)) {\n edges.get(link.from[0])?.add(link.to[0]);\n }\n }\n return edges;\n}\n\nexport interface FbAnalyzeOptions {\n /** The user blocks the diagram may use - by default its own copies */\n userBlocks?: Record<string, FbUserBlock>;\n /** The diagram is a block: FB_IN and FB_OUT make its pins, states are not reachable */\n isBlock?: boolean;\n /** The user blocks being checked further up, against a block that contains itself */\n visiting?: Set<string>;\n /** Results of user blocks checked already */\n cache?: Map<string, FbAnalysis>;\n}\n\n/** A pin name becomes a property of the instance next to `run()` */\nconst PIN_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;\nconst RESERVED_PINS = ['run', 'self', 'constructor', 'prototype', '__proto__'];\n\nexport function formatIssue(issue: FbIssue): string {\n let index = 0;\n return issue.message.replace(/%s/g, () => issue.args?.[index++] ?? '');\n}\n\n/** Checks a user block once per analysis; its errors become one error of the instance */\nfunction checkUserBlock(user: FbUserBlock, options: Required<FbAnalyzeOptions>): string | null {\n if (options.visiting.has(user.type)) {\n return 'The block %s contains itself';\n }\n let analysis = options.cache.get(user.type);\n if (!analysis) {\n options.visiting.add(user.type);\n analysis = analyzeGraph(user.graph, { ...options, isBlock: true });\n options.visiting.delete(user.type);\n options.cache.set(user.type, analysis);\n }\n return analysis.issues.some(issue => issue.severity === 'error') ? 'The block %s has errors: %s' : null;\n}\n\n/**\n * Checks a diagram and works out the execution order.\n *\n * The order follows the data flow. A loop is only allowed when it runs through a block with a\n * state (a timer, a flip-flop, a user block, ...): the link that leads back reads what that block\n * put out in the previous cycle, as in any SPS. A loop without such a block has no solution and is\n * an error.\n */\nexport function analyzeGraph(graph: FbGraph, analyzeOptions?: FbAnalyzeOptions): FbAnalysis {\n const options: Required<FbAnalyzeOptions> = {\n userBlocks: analyzeOptions?.userBlocks || graph.userBlocks || {},\n isBlock: analyzeOptions?.isBlock ?? !!graph.block,\n visiting: analyzeOptions?.visiting || new Set(graph.block ? [graph.block.type] : []),\n cache: analyzeOptions?.cache || new Map(),\n };\n const issues: FbIssue[] = [];\n const nodes = new Map<string, Node>();\n\n if (graph.block && !FB_USER_TYPE_PATTERN.test(graph.block.type)) {\n issues.push({ severity: 'error', message: 'Invalid block type %s', args: [graph.block.type] });\n }\n const pins = new Set<string>();\n\n for (const block of graph.blocks) {\n if (!FB_ID_PATTERN.test(block.id || '')) {\n issues.push({ severity: 'error', message: 'Invalid block ID %s', args: [String(block.id)] });\n continue;\n }\n if (nodes.has(block.id)) {\n issues.push({ severity: 'error', message: 'Duplicate block ID %s', args: [block.id], blockId: block.id });\n continue;\n }\n const def = getBlockDef(block.type, options.userBlocks);\n if (!def) {\n issues.push({ severity: 'error', message: 'Unknown block type %s', args: [block.type], blockId: block.id });\n continue;\n }\n nodes.set(block.id, { block, def });\n\n for (const param of def.params || []) {\n const value = block.params?.[param.id] ?? param.default;\n if (param.required && (value === undefined || value === null || value === '')) {\n issues.push({\n severity: 'error',\n message: 'Parameter \"%s\" is not set',\n args: [param.id],\n blockId: block.id,\n });\n }\n }\n\n if (def.category === 'interface') {\n if (!options.isBlock) {\n issues.push({\n severity: 'error',\n message: 'Inputs and outputs of a block only work in the diagram of a block',\n blockId: block.id,\n });\n }\n const pin = String(block.params?.pin ?? '');\n if (pin && (!PIN_NAME.test(pin) || RESERVED_PINS.includes(pin))) {\n issues.push({ severity: 'error', message: 'Invalid pin name %s', args: [pin], blockId: block.id });\n } else if (pin && pins.has(pin)) {\n issues.push({\n severity: 'error',\n message: 'The pin name %s is used twice',\n args: [pin],\n blockId: block.id,\n });\n }\n pins.add(pin);\n } else if (options.isBlock && (block.type === 'STATE_IN' || block.type === 'STATE_OUT')) {\n issues.push({\n severity: 'error',\n message: 'A block cannot read or write states - give it inputs and outputs instead',\n blockId: block.id,\n });\n }\n\n if (def.user) {\n const problem = checkUserBlock(def.user, options);\n if (problem) {\n const inner = options.cache.get(def.user.type)?.issues.find(issue => issue.severity === 'error');\n issues.push({\n severity: 'error',\n message: problem,\n args: inner ? [def.user.name, formatIssue(inner)] : [def.user.name],\n blockId: block.id,\n });\n }\n }\n\n if (block.type === 'JS') {\n const problem = checkJsCode(jsCode(block, def), jsParameters(block, def));\n if (problem) {\n issues.push({\n severity: 'error',\n message: 'The code has an error: %s',\n args: [problem],\n blockId: block.id,\n });\n }\n }\n }\n\n // links: both ends must exist, the types must fit, and an input takes one signal only\n const links: FbLink[] = [];\n const driven = new Set<string>();\n for (const link of graph.links) {\n const from = nodes.get(link.from[0]);\n const to = nodes.get(link.to[0]);\n const output = from && getOutputs(from.block, from.def).find(pin => pin.id === link.from[1]);\n const input = to && getInputs(to.block, to.def).find(pin => pin.id === link.to[1]);\n if (!output || !input) {\n issues.push({\n severity: 'error',\n message: 'The connection refers to a missing block or pin',\n linkId: link.id,\n blockId: to ? link.to[0] : from ? link.from[0] : undefined,\n });\n continue;\n }\n if (!isCompatible(output.type, input.type)) {\n issues.push({\n severity: 'error',\n message: 'Types do not match: %s cannot be connected to %s',\n args: [output.type, input.type],\n linkId: link.id,\n blockId: link.to[0],\n });\n continue;\n }\n const key = `${link.to[0]}.${link.to[1]}`;\n if (driven.has(key)) {\n issues.push({\n severity: 'error',\n message: 'Input %s is connected more than once',\n args: [link.to[1]],\n linkId: link.id,\n blockId: link.to[0],\n });\n continue;\n }\n driven.add(key);\n links.push(link);\n }\n\n // Loops: inside a loop, the links that start at a block with a state may lead back. Whatever\n // is still a loop without them has no block to take the value of the previous cycle from.\n const ids = [...nodes.keys()];\n const allEdges = buildEdges(ids, links);\n const inLoop = new Map<string, number>();\n findComponents(ids, allEdges)\n .filter(component => isLoop(component, allEdges))\n .forEach((component, i) => component.forEach(id => inLoop.set(id, i)));\n\n const breakable = (link: FbLink): boolean =>\n !!nodes.get(link.from[0])?.def.stateful &&\n inLoop.has(link.from[0]) &&\n inLoop.get(link.from[0]) === inLoop.get(link.to[0]);\n\n const orderEdges = buildEdges(ids, links, breakable);\n for (const component of findComponents(ids, orderEdges)) {\n if (isLoop(component, orderEdges)) {\n const names = component\n .map(id => nodes.get(id)!.block)\n .sort(byPosition)\n .map(block => block.name || block.id);\n issues.push({\n severity: 'error',\n message: 'Loop without a block that stores a value: %s',\n args: [names.join(', ')],\n blockIds: component,\n });\n }\n }\n\n // topological order; blocks that are ready at the same time run from left to right, then top down\n const incoming = new Map<string, number>(ids.map(id => [id, 0]));\n orderEdges.forEach(targets => targets.forEach(id => incoming.set(id, incoming.get(id)! + 1)));\n const ready = ids.filter(id => !incoming.get(id));\n const sequence: string[] = [];\n while (ready.length) {\n ready.sort((a, b) => byPosition(nodes.get(a)!.block, nodes.get(b)!.block));\n const id = ready.shift()!;\n sequence.push(id);\n for (const next of orderEdges.get(id)!) {\n const count = incoming.get(next)! - 1;\n incoming.set(next, count);\n if (!count) {\n ready.push(next);\n }\n }\n }\n // blocks of an unsolvable loop still get a number, so the editor can show one\n ids.filter(id => !sequence.includes(id))\n .sort((a, b) => byPosition(nodes.get(a)!.block, nodes.get(b)!.block))\n .forEach(id => sequence.push(id));\n\n const order: Record<string, number> = {};\n sequence.forEach((id, i) => (order[id] = (i + 1) * 10));\n\n const feedback = links.filter(link => order[link.from[0]] >= order[link.to[0]]).map(link => link.id);\n\n const timeDependent = [...nodes.values()].some(node => node.def.timeDependent);\n const mode = graph.cycle.mode === 'auto' ? (timeDependent ? 'cyclic' : 'event') : graph.cycle.mode;\n const ms = Math.max(\n FB_CYCLE_MIN_MS,\n Math.min(FB_CYCLE_MAX_MS, Math.round(Number(graph.cycle.ms) || FB_CYCLE_DEFAULT_MS)),\n );\n // the mode of a block is the one of the diagram it is used in\n if (mode === 'event' && timeDependent && !options.isBlock) {\n issues.push({\n severity: 'warning',\n message: 'Timers need the cyclic mode, in the event mode they only run when an input changes',\n });\n }\n\n return { issues, order, feedback, links, mode, ms };\n}\n\nfunction byPosition(a: FbBlock, b: FbBlock): number {\n return a.pos[0] - b.pos[0] || a.pos[1] - b.pos[1] || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0);\n}\n"]}