iobroker.javascript 10.4.1 → 10.4.2

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 (125) hide show
  1. package/README.md +4 -4
  2. package/admin/assets/AiChatPanel-Bh1UgzLN.js +27 -0
  3. package/admin/assets/AiChatService-h1EHSXaR.js +216 -0
  4. package/admin/assets/AiDiffView-pmbNE43A.js +1 -0
  5. package/admin/assets/{AiInlineProvider-R_AVYwFT.js → AiInlineProvider-CslJGmO0.js} +1 -1
  6. package/admin/assets/{BlocklyEditor-DPJkoxjP.js → BlocklyEditor-DD7PWWnm.js} +7 -7
  7. package/admin/assets/Compile-CHnsUZ3H.js +165 -0
  8. package/admin/assets/Debugger-DcFTsY_u.js +15 -0
  9. package/admin/assets/Diff-BMtToKAY.js +1 -0
  10. package/admin/assets/{Documentation-D3E0U4AK.js → Documentation-DmTfviYr.js} +4 -4
  11. package/admin/assets/ExpandMore-BjBfK8y_.js +1 -0
  12. package/admin/assets/{FbEditor-A7I5U0hA.js → FbEditor-BCD6eDj-.js} +6 -6
  13. package/admin/assets/History-DM03Cwv-.js +1 -0
  14. package/admin/assets/Import-Bh_K9cpx.js +1 -0
  15. package/admin/assets/MonacoDiff-yYWwyqpx.js +1 -0
  16. package/admin/assets/NotificationsActive-B7pgt1LW.js +1 -0
  17. package/admin/assets/RulesEditor-CV-5poRY.js +1 -0
  18. package/admin/assets/ScriptEditor-sb_g6vXT.js +2 -0
  19. package/admin/assets/ScriptEditorVanillaMonaco-DbOlv3vi.js +3 -0
  20. package/admin/assets/Send-Bo4QPFhQ.js +1 -0
  21. package/admin/assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-B7myBQHF.js +1 -0
  22. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__57338878793567__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-8WiAnp-r.js +1217 -0
  23. package/admin/assets/{_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__234968779812303__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DLWT3PGo.js → _virtual_mf___mfe_internal__iobroker_javascript__mf_owner__57338878793567__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-BCLgOrQh.js} +1 -1
  24. package/admin/assets/aiPromptBuilder-jeMwCFvL.js +1 -0
  25. package/admin/assets/blocklyTheme-B0abPSuE.js +1 -0
  26. package/admin/assets/{blocks_action-3CepYoiX.js → blocks_action-CM4AAMF1.js} +1 -1
  27. package/admin/assets/{blocks_convert-BEpxVx-_.js → blocks_convert-DIBthcQF.js} +1 -1
  28. package/admin/assets/{blocks_logic-CyIBT53p.js → blocks_logic-CJBNXoP3.js} +1 -1
  29. package/admin/assets/{blocks_number-yqm4qwfh.js → blocks_number-GuNZ4kQO.js} +1 -1
  30. package/admin/assets/{blocks_object-CizLkmWp.js → blocks_object-BFR1ocL_.js} +1 -1
  31. package/admin/assets/{blocks_procedures-pFTThYqz.js → blocks_procedures-CQxCN9F8.js} +1 -1
  32. package/admin/assets/{blocks_sendto-rEq1xPmO.js → blocks_sendto-DSfpmOb2.js} +1 -1
  33. package/admin/assets/{blocks_switch-D3aybjqu.js → blocks_switch-CzWnVKX-.js} +1 -1
  34. package/admin/assets/{blocks_system-BVRsS2OE.js → blocks_system-DVfA31Hy.js} +1 -1
  35. package/admin/assets/{blocks_text-D93xQ_03.js → blocks_text-CgO-seeL.js} +1 -1
  36. package/admin/assets/{blocks_time-ChxhjgD7.js → blocks_time-DNQPTg92.js} +1 -1
  37. package/admin/assets/{blocks_timeout-CUZ80HaP.js → blocks_timeout-BXypxY7F.js} +1 -1
  38. package/admin/assets/{blocks_trigger-DivLpAuy.js → blocks_trigger-elp6XrND.js} +1 -1
  39. package/admin/assets/cronHoverProvider-CZrYrB2m.js +2 -0
  40. package/admin/assets/{dist-CzitsFi7.js → dist-CSJEdwl2.js} +1 -1
  41. package/admin/assets/field_cron-m1xxzKf2.js +1 -0
  42. package/admin/assets/field_oid-BLNfi7lh.js +1 -0
  43. package/admin/assets/field_script-CGDpmlGL.js +1 -0
  44. package/admin/assets/{helpers-Bt4VKZBw.js → helpers-Ch3tewpw.js} +1 -1
  45. package/admin/assets/helpers-DT5-3o-l.js +1 -0
  46. package/admin/assets/{hostInit-CrHjJGJJ.js → hostInit-CflF0J5w.js} +1 -1
  47. package/admin/assets/index-_7Mh4AxK.js +157 -0
  48. package/admin/assets/inlineChatWidget-BfjarD99.js +2 -0
  49. package/admin/assets/{inlineDiffController-ly6qX4jk.js → inlineDiffController-VazWO1wi.js} +1 -1
  50. package/admin/assets/{loadBlocks-DDLPEDa6.js → loadBlocks-CGEGNJcd.js} +23 -23
  51. package/admin/assets/{mf-entry-bootstrap-0-d055f05d.js → mf-entry-bootstrap-0-536f3328.js} +3 -3
  52. package/admin/assets/{pendingShares-mBGPbRwZ.js → pendingShares-WHCuAHKo.js} +2 -2
  53. package/admin/assets/reactour.esm-CETRUaME.js +137 -0
  54. package/admin/assets/{stateHoverProvider-wAsP-THx.js → stateHoverProvider-BfhQov29.js} +1 -1
  55. package/admin/assets/{utils-DUKzLJUz.js → utils-BFhwh2EC.js} +1 -1
  56. package/admin/assets/vite-preload-helper-BbbETgeG.js +1 -0
  57. package/admin/custom/assets/Components-C6UfjQAS.js +1 -0
  58. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-B1DaT32e.js +1 -0
  59. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-BRo2TJu1.js +1 -0
  60. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BhZYie9-.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-nQIzP_1l.js} +95 -95
  61. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.js-DQfhTnYi.js +1 -0
  62. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__loadShare__date_mf_2_fns__loadShare__.js-BrsJpRn9.js +1 -0
  63. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__loadShare__shared-Bm5cq4Wz.js +2 -0
  64. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-Bv9I6S4D.js +122 -0
  65. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__prebuild__leaflet__prebuild__-R1ziirob.js +1 -0
  66. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__prebuild__react_mf_2_dom_mf_1_client__prebuild__-DOkC-g0X.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__prebuild__react_mf_2_dom_mf_1_client__prebuild__--phH3reL.js} +1 -1
  67. package/admin/custom/assets/{dist-CzitsFi7.js → dist-CSJEdwl2.js} +1 -1
  68. package/admin/custom/assets/helpers-DT5-3o-l.js +1 -0
  69. package/admin/custom/assets/{hostInit-akwaQLq8.js → hostInit-CuGqkIzY.js} +1 -1
  70. package/admin/custom/assets/index-CgBEPuXx.js +1 -0
  71. package/admin/custom/assets/{lib-CADOx2YN.js → lib-WawTWipl.js} +1 -1
  72. package/admin/custom/assets/{mf-entry-bootstrap-0-3c4565e0.js → mf-entry-bootstrap-0-81b08d9c.js} +3 -3
  73. package/admin/custom/assets/pendingShares-5RvH3v48.js +2 -0
  74. package/admin/custom/assets/{utils-DUKzLJUz.js → utils-BFhwh2EC.js} +1 -1
  75. package/admin/custom/assets/vite-preload-helper-BbbETgeG.js +1 -0
  76. package/admin/custom/customComponents.js +2 -2
  77. package/admin/mf-manifest.json +1 -1
  78. package/admin/mf-stats.json +1 -1
  79. package/admin/remoteEntry.js +2 -2
  80. package/admin/tab.html +2 -2
  81. package/io-package.json +14 -14
  82. package/package.json +6 -6
  83. package/admin/assets/AiChatPanel-CfjSsVpE.js +0 -27
  84. package/admin/assets/AiChatService-rFZwYNPk.js +0 -216
  85. package/admin/assets/AiDiffView-DeynDw7L.js +0 -1
  86. package/admin/assets/Compile-BgTrxmPA.js +0 -165
  87. package/admin/assets/Debugger-CThCzBvP.js +0 -15
  88. package/admin/assets/Diff--plofAtP.js +0 -1
  89. package/admin/assets/ExpandMore-Dio4GeHC.js +0 -1
  90. package/admin/assets/History-Ewi5YEEn.js +0 -1
  91. package/admin/assets/Import-6Mm2vrM2.js +0 -1
  92. package/admin/assets/MonacoDiff-BYvG7IqB.js +0 -1
  93. package/admin/assets/NotificationsActive-CuNfWVJM.js +0 -1
  94. package/admin/assets/RulesEditor-MDkGXERp.js +0 -1
  95. package/admin/assets/ScriptEditor-CqphehA8.js +0 -2
  96. package/admin/assets/ScriptEditorVanillaMonaco-CxgNa-3O.js +0 -3
  97. package/admin/assets/Send-Pz1eveU5.js +0 -1
  98. package/admin/assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-Ceh8EDcF.js +0 -1
  99. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__234968779812303__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BRdHvuuG.js +0 -1217
  100. package/admin/assets/aiPromptBuilder-CI2ChET0.js +0 -1
  101. package/admin/assets/blocklyTheme-iZoge1S9.js +0 -1
  102. package/admin/assets/cronHoverProvider-Curcjz4m.js +0 -2
  103. package/admin/assets/field_cron-RgLY53_S.js +0 -1
  104. package/admin/assets/field_oid-rBhotXJe.js +0 -1
  105. package/admin/assets/field_script-CU7g3-oB.js +0 -1
  106. package/admin/assets/helpers-BZgjFQNf.js +0 -1
  107. package/admin/assets/index-DzAQnPTD.js +0 -157
  108. package/admin/assets/inlineChatWidget-ChchJD9a.js +0 -2
  109. package/admin/assets/reactour.esm-Dk3aGxKn.js +0 -137
  110. package/admin/assets/vite-preload-helper-DjNwdemH.js +0 -1
  111. package/admin/custom/assets/Components-fDcxCyN4.js +0 -1
  112. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-BraOrMSu.js +0 -1
  113. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CVvbIPAy.js +0 -1
  114. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.js-CV50dgj4.js +0 -1
  115. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__loadShare__date_mf_2_fns__loadShare__.js-Djg9OMcQ.js +0 -1
  116. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__loadShare__shared-Hb6V6BnJ.js +0 -2
  117. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-BrY-nF2a.js +0 -122
  118. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__prebuild__leaflet__prebuild__-CHjWtrkp.js +0 -1
  119. package/admin/custom/assets/helpers-BZgjFQNf.js +0 -1
  120. package/admin/custom/assets/index-BkItz-nL.js +0 -1
  121. package/admin/custom/assets/pendingShares-TCMDgBLn.js +0 -2
  122. package/admin/custom/assets/vite-preload-helper-DjNwdemH.js +0 -1
  123. /package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-DbKT6Hsb.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-DbKT6Hsb.js} +0 -0
  124. /package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__loadShare__leaflet__loadShare__.js-D9EyCd42.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__loadShare__leaflet__loadShare__.js-D9EyCd42.js} +0 -0
  125. /package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__198282747311932__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-CXpyx8Vy.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__18840520564161__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-CXpyx8Vy.js} +0 -0
@@ -0,0 +1,2 @@
1
+ import{m as e,sr as t}from"./_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__57338878793567__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-8WiAnp-r.js";import{t as n}from"./applyCodeEdit-D3nb7erO.js";var r=`iobroker.aichat.inline`;function i(e){if(!e)return{code:null,text:``};let t=e.match(/```[\w-]*\n([\s\S]*?)\n```/);return t?{code:t[1],text:e.replace(t[0],``).trim()}:{code:null,text:e}}var a=class a{constructor(n,r,i){t(this,`editor`,void 0),t(this,`monaco`,void 0),t(this,`host`,void 0),t(this,`domNode`,void 0),t(this,`input`,void 0),t(this,`status`,void 0),t(this,`responseBox`,void 0),t(this,`sendBtn`,void 0),t(this,`cancelBtn`,void 0),t(this,`applyBtn`,void 0),t(this,`openChatBtn`,void 0),t(this,`contentWidget`,null),t(this,`pendingResponse`,``),t(this,`pendingCode`,null),t(this,`initialRange`,null),t(this,`initialSelectedCode`,``),this.editor=n,this.monaco=r,this.host=i;let o=document.createElement(`div`);o.className=`iob-inline-chat`,o.style.cssText=[`background: var(--vscode-editor-background, #1e1e1e)`,`border: 1px solid rgba(128, 128, 128, 0.4)`,`border-radius: 6px`,`padding: 8px`,`min-width: 420px`,`max-width: 720px`,`box-shadow: 0 4px 12px rgba(0,0,0,0.3)`,`font-family: var(--vscode-font-family, system-ui)`,`font-size: 12px`,`color: var(--vscode-editor-foreground, #eee)`,`z-index: 100`].join(`; `);let s=document.createElement(`div`);s.textContent=`🤖 ${e.t(`AI inline chat`)}`,s.style.cssText=`font-weight: 600; margin-bottom: 6px; opacity: 0.8;`,o.appendChild(s),this.input=document.createElement(`textarea`),this.input.rows=2,this.input.placeholder=e.t(`Ask anything, or request a change (e.g. "what does this do?")`),this.input.style.cssText=[`width: 100%`,`box-sizing: border-box`,`background: rgba(0,0,0,0.2)`,`color: inherit`,`border: 1px solid rgba(128, 128, 128, 0.3)`,`border-radius: 4px`,`padding: 6px 8px`,`font-family: inherit`,`font-size: 12px`,`resize: vertical`].join(`; `),o.appendChild(this.input),this.status=document.createElement(`div`),this.status.style.cssText=`min-height: 16px; margin-top: 6px; opacity: 0.7; font-size: 11px;`,o.appendChild(this.status),this.responseBox=document.createElement(`pre`),this.responseBox.style.cssText=[`margin: 6px 0 0 0`,`padding: 6px`,`background: rgba(0,0,0,0.25)`,`border-radius: 4px`,`max-height: 240px`,`overflow: auto`,`white-space: pre-wrap`,`word-wrap: break-word`,`font-family: var(--vscode-editor-font-family, monospace)`,`font-size: 12px`,`display: none`].join(`; `),o.appendChild(this.responseBox);let c=document.createElement(`div`);c.style.cssText=`display: flex; gap: 6px; justify-content: flex-end; margin-top: 8px;`,this.cancelBtn=a.makeButton(e.t(`Cancel`),`Esc`,!1),this.openChatBtn=a.makeButton(e.t(`Open in chat`),``,!1),this.openChatBtn.style.display=`none`,this.applyBtn=a.makeButton(e.t(`Apply`),`Enter`,!0),this.applyBtn.style.display=`none`,this.sendBtn=a.makeButton(e.t(`Send`),`Ctrl+Enter`,!0),c.appendChild(this.cancelBtn),c.appendChild(this.openChatBtn),c.appendChild(this.applyBtn),c.appendChild(this.sendBtn),o.appendChild(c),this.domNode=o,this.input.addEventListener(`keydown`,e=>this.onInputKeyDown(e)),this.sendBtn.addEventListener(`click`,()=>this.submit()),this.cancelBtn.addEventListener(`click`,()=>this.hide()),this.applyBtn.addEventListener(`click`,()=>this.applyProposal()),this.openChatBtn.addEventListener(`click`,()=>this.escalateToChat()),o.addEventListener(`mousedown`,e=>e.stopPropagation()),o.addEventListener(`keydown`,e=>e.stopPropagation())}static makeButton(e,t,n){let r=document.createElement(`button`);return r.textContent=t?`${e} · ${t}`:e,r.style.cssText=[`background: ${n?`var(--vscode-button-background, #0e639c)`:`transparent`}`,`color: ${n?`var(--vscode-button-foreground, #fff)`:`inherit`}`,`border: 1px solid ${n?`transparent`:`rgba(128, 128, 128, 0.4)`}`,`border-radius: 4px`,`padding: 4px 10px`,`cursor: pointer`,`font-family: inherit`,`font-size: 11px`].join(`; `),r}onInputKeyDown(e){e.key===`Escape`?(e.preventDefault(),this.hide()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.submit())}show(){let t=this.editor.getSelection(),n=this.editor.getModel();if(!n)return;this.initialRange=t&&!t.isEmpty()?t:null,this.initialSelectedCode=this.initialRange?n.getValueInRange(this.initialRange):``,this.input.value=``;let r=this.initialSelectedCode.split(`
2
+ `).length;this.status.textContent=this.initialSelectedCode?e.t(`Selection: %s line(s)`,r):e.t(`No selection — the question will use context from the whole script.`),this.responseBox.style.display=`none`,this.responseBox.textContent=``,this.applyBtn.style.display=`none`,this.openChatBtn.style.display=`none`,this.sendBtn.style.display=``,this.pendingResponse=``,this.pendingCode=null;let i=this.buildContentWidget();this.editor.addContentWidget(i),this.contentWidget=i,setTimeout(()=>this.input.focus(),50)}hide(){this.contentWidget&&=(this.editor.removeContentWidget(this.contentWidget),null),this.editor.focus()}buildContentWidget(){var e;let t=this.editor.getSelection(),n=(t==null?void 0:t.endLineNumber)??((e=this.editor.getPosition())==null?void 0:e.lineNumber)??1,i=(t==null?void 0:t.endColumn)??1,a=this.domNode,o=this.monaco;return{getId(){return r},getDomNode(){return a},getPosition(){return{position:{lineNumber:n,column:i},preference:[o.editor.ContentWidgetPositionPreference.BELOW,o.editor.ContentWidgetPositionPreference.ABOVE]}}}}async submit(){let t=this.input.value.trim();if(!t){this.status.textContent=e.t(`Please enter a question.`);return}this.setLoading(!0);try{let e=await this.host.onSubmit({question:t,selectedCode:this.initialSelectedCode,range:this.initialRange});this.showResponse(e)}catch(t){this.status.textContent=`${e.t(`Error`)}: ${t.message||String(t)}`}finally{this.setLoading(!1)}}setLoading(t){this.sendBtn.disabled=t,this.input.disabled=t,this.status.textContent=t?e.t(`Thinking…`):``}showResponse(t){let n=i(t);this.pendingResponse=t,this.pendingCode=n.code,this.responseBox.textContent=n.code?n.code:n.text,this.responseBox.style.display=``,this.status.textContent=n.code?e.t(`Code proposal — press Apply to replace your selection.`):e.t(`Plain text answer.`),this.sendBtn.style.display=`none`,this.applyBtn.style.display=n.code?``:`none`,this.openChatBtn.style.display=``}applyProposal(){if(!this.pendingCode){this.hide();return}let e=this.initialRange?{startLine:this.initialRange.startLineNumber,startColumn:this.initialRange.startColumn,endLine:this.initialRange.endLineNumber,endColumn:this.initialRange.endColumn}:null;n(this.editor,this.monaco,e,this.pendingCode,{source:`inline-chat`}),this.hide()}escalateToChat(){this.host.onEscalateToChat&&this.host.onEscalateToChat({question:this.input.value.trim()||e.t(`Show more details`),selectedCode:this.initialSelectedCode,range:this.initialRange}),this.hide()}dispose(){this.hide()}};export{a as InlineChatWidget};
@@ -1,4 +1,4 @@
1
- import{m as e,or as t}from"./_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__234968779812303__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BRdHvuuG.js";import{t as n}from"./applyCodeEdit-D3nb7erO.js";function r(e,t){let n=e===``?[]:e.split(`
1
+ import{m as e,sr as t}from"./_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__57338878793567__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-8WiAnp-r.js";import{t as n}from"./applyCodeEdit-D3nb7erO.js";function r(e,t){let n=e===``?[]:e.split(`
2
2
  `),r=t===``?[]:t.split(`
3
3
  `),i=n.length,a=r.length;if(i===0)return r.map(e=>({op:`insert`,line:e}));if(a===0)return n.map(e=>({op:`delete`,line:e}));let o=Array.from({length:i+1},()=>Array(a+1).fill(0));for(let e=1;e<=i;e++)for(let t=1;t<=a;t++)o[e][t]=n[e-1]===r[t-1]?o[e-1][t-1]+1:Math.max(o[e-1][t],o[e][t-1]);let s=[],c=i,l=a;for(;c>0&&l>0;)n[c-1]===r[l-1]?(s.unshift({op:`equal`,line:n[c-1]}),c--,l--):o[c-1][l]>o[c][l-1]?(s.unshift({op:`delete`,line:n[c-1]}),c--):(s.unshift({op:`insert`,line:r[l-1]}),l--);for(;c>0;)s.unshift({op:`delete`,line:n[--c]});for(;l>0;)s.unshift({op:`insert`,line:r[--l]});return s}function i(e){let t=[],n=0,r=null,i=()=>{r&&=(t.push(r),null)};for(let t of e){if(t.op===`equal`){i(),n++;continue}r||={originalStart:n,deletedCount:0,insertedLines:[]},t.op===`delete`?(r.deletedCount++,n++):r.insertedLines.push(t.line)}return i(),t}var a=`iobroker.aichat.inlineDiff.toolbar`,o=class{constructor(e,n,r){t(this,`editor`,void 0),t(this,`monaco`,void 0),t(this,`opts`,void 0),t(this,`decorations`,[]),t(this,`viewZoneIds`,[]),t(this,`toolbarSpacerZoneId`,null),t(this,`toolbarWidget`,null),t(this,`disposed`,!1),this.editor=e,this.monaco=n,this.opts=r}show(){if(this.disposed)return;let{range:e,originalText:t,modifiedText:n}=this.opts,a=i(r(t,n));if(!a.length){var o,s;(o=(s=this.opts).onAccepted)==null||o.call(s);return}if(this.renderDeletions(e,a),this.renderInsertions(e,a),this.renderAcceptWidget(e),this.editor.getModel()){let e=this.editor.onDidChangeModelContent(()=>{if(e.dispose(),!this.disposed){var t,n;this.dispose(),(t=(n=this.opts).onRejected)==null||t.call(n)}})}}renderDeletions(e,t){let n=[],r=e.startLine;for(let e of t){if(e.deletedCount===0)continue;let t=r+e.originalStart,i=t+e.deletedCount-1;n.push({range:new this.monaco.Range(t,1,i,1),options:{isWholeLine:!0,className:`iob-aichat-diff-deleted`,linesDecorationsClassName:`iob-aichat-diff-deleted-gutter`,inlineClassName:`iob-aichat-diff-deleted-inline`}})}this.decorations=this.editor.deltaDecorations([],n)}renderInsertions(e,t){this.editor.changeViewZones(n=>{let r=e.startLine;for(let e of t){if(e.insertedLines.length===0)continue;let t=e.deletedCount>0?r+e.originalStart+e.deletedCount-1:r+e.originalStart-1,i=document.createElement(`div`);i.className=`iob-aichat-diff-inserted`,i.style.cssText=[`background: rgba(46, 160, 67, 0.15)`,`border-left: 3px solid rgb(46, 160, 67)`,`padding: 2px 8px 2px 10px`,`font-family: var(--monaco-monospace-font, monospace)`,`white-space: pre`,`overflow-x: auto`,`font-size: 12px`,`line-height: 18px`].join(`;`);for(let t of e.insertedLines){let e=document.createElement(`div`);e.textContent=t.length?t:`\xA0`,i.appendChild(e)}let a=n.addZone({afterLineNumber:Math.max(0,t),heightInLines:e.insertedLines.length,domNode:i});this.viewZoneIds.push(a)}})}renderAcceptWidget(t){let n=this.monaco,r=this.editor,i=!0;try{let e=r.getDomNode();if(e){let t=getComputedStyle(e).backgroundColor.match(/\d+/g);if(t&&t.length>=3){let[e,n,r]=t.map(e=>parseInt(e,10));i=(.299*e+.587*n+.114*r)/255<.5}}}catch{}let o=i?{bg:`rgba(37, 37, 38, 0.97)`,text:`#cccccc`,labelMuted:`#a0a0a0`,border:`rgba(255, 255, 255, 0.12)`,secondaryBg:`rgba(90, 93, 94, 0.4)`,secondaryHoverBg:`rgba(90, 93, 94, 0.6)`,secondaryText:`#cccccc`,primaryBg:`rgb(14, 99, 156)`,primaryHoverBg:`rgb(17, 119, 187)`,primaryText:`#ffffff`,accent:`rgb(79, 149, 255)`}:{bg:`rgba(243, 243, 243, 0.97)`,text:`#1f1f1f`,labelMuted:`#616161`,border:`rgba(0, 0, 0, 0.12)`,secondaryBg:`rgba(0, 0, 0, 0.04)`,secondaryHoverBg:`rgba(0, 0, 0, 0.08)`,secondaryText:`#1f1f1f`,primaryBg:`rgb(0, 98, 165)`,primaryHoverBg:`rgb(0, 120, 200)`,primaryText:`#ffffff`,accent:`rgb(0, 98, 165)`},s=document.createElement(`div`);s.className=`iob-aichat-diff-toolbar`,s.style.cssText=[`display: flex`,`align-items: center`,`gap: 6px`,`padding: 2px 8px`,`height: 22px`,`box-sizing: border-box`,`font-family: var(--monaco-monospace-font, system-ui)`,`font-size: 11px`,`color: ${o.text}`,`background: ${o.bg}`,`border: 1px solid ${o.border}`,`border-left: 3px solid ${o.accent}`,`border-radius: 3px`,`box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25)`,`pointer-events: auto`,`user-select: none`,`cursor: default`,`white-space: nowrap`].join(`;`);let c=document.createElement(`span`);c.textContent=`🤖 ${e.t(`AI suggestion`)}`,c.style.cssText=`color: ${o.labelMuted}; margin-right: 4px;`,s.appendChild(c);let l=(e,t,n)=>{let r=document.createElement(`button`);r.type=`button`,r.textContent=e;let i=t?o.primaryBg:o.secondaryBg,a=t?o.primaryHoverBg:o.secondaryHoverBg,s=t?o.primaryText:o.secondaryText;return r.style.cssText=[`background: ${i}`,`color: ${s}`,`border: 1px solid ${t?`transparent`:o.border}`,`border-radius: 2px`,`padding: 2px 10px`,`cursor: pointer`,`font-family: inherit`,`font-size: 11px`,`line-height: 16px`,`white-space: nowrap`,`pointer-events: auto`].join(`;`),r.addEventListener(`mouseenter`,()=>{r.style.background=a}),r.addEventListener(`mouseleave`,()=>{r.style.background=i}),r.addEventListener(`click`,e=>{e.stopPropagation(),e.preventDefault(),n(e)}),r.addEventListener(`mousedown`,e=>e.stopPropagation(),!0),r},u=l(`✓ ${e.t(`Apply changes`)}`,!0,()=>this.accept()),d=l(`✗ ${e.t(`Discard changes`)}`,!1,()=>this.reject());s.appendChild(u),s.appendChild(d),s.addEventListener(`mousedown`,e=>e.stopPropagation(),!0),s.addEventListener(`click`,e=>e.stopPropagation());let f=document.createElement(`div`);f.style.cssText=`pointer-events: none;`;let p=Math.max(0,t.startLine-1);this.editor.changeViewZones(e=>{this.toolbarSpacerZoneId=e.addZone({afterLineNumber:p,heightInLines:1,domNode:f})});let m=t.startLine,h={getId(){return a},getDomNode(){return s},getPosition(){return{position:{lineNumber:m,column:1},preference:[n.editor.ContentWidgetPositionPreference.ABOVE,n.editor.ContentWidgetPositionPreference.BELOW]}},allowEditorOverflow:!0};this.toolbarWidget=h,r.addContentWidget(h)}accept(){if(this.disposed)return;let e=n(this.editor,this.monaco,this.opts.range,this.opts.modifiedText,{source:`ai-inline-diff`});if(this.dispose(),e){var t,r;(t=(r=this.opts).onAccepted)==null||t.call(r)}}reject(){var e,t;this.disposed||(this.dispose(),(e=(t=this.opts).onRejected)==null||e.call(t))}dispose(){if(!this.disposed){this.disposed=!0;try{this.editor.deltaDecorations(this.decorations,[])}catch{}try{this.editor.changeViewZones(e=>{for(let t of this.viewZoneIds)e.removeZone(t);this.toolbarSpacerZoneId&&e.removeZone(this.toolbarSpacerZoneId)})}catch{}if(this.toolbarWidget){try{this.editor.removeContentWidget(this.toolbarWidget)}catch{}this.toolbarWidget=null}this.toolbarSpacerZoneId=null,this.decorations=[],this.viewZoneIds=[]}}},s=`
4
4
  .iob-aichat-diff-deleted {
@@ -1,8 +1,8 @@
1
- import{o as e,t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,Fr as r,Pt as i,Vn as a,Wt as o,Xt as s,_n as c,cn as l,cr as u,dn as d,fr as f,g as p,j as m,ln as h,lr as g,m as _,nn as v,or as y,sn as b,t as x,un as S,y as C}from"./_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__234968779812303__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BRdHvuuG.js";import{a as w,b as T,c as E,d as D,f as O,g as k,h as A,i as j,l as M,n as N,o as P,r as F,s as ee,t as te,u as I,v as L,y as R}from"./Compile-BgTrxmPA.js";import{n as z,r as ne}from"./dist-CzitsFi7.js";var B={en:{name:`Google - English`,engine:`google`,params:[]},de:{name:`Google - Deutsch`,engine:`google`,params:[]},ru:{name:`Google - Русский`,engine:`google`,params:[]},it:{name:`Google - Italiano`,engine:`google`,params:[]},es:{name:`Google - Espaniol`,engine:`google`,params:[]},fr:{name:`Google - Français`,engine:`google`,params:[]},ru_YA:{name:`Yandex - Русский`,engine:`yandex`,params:[`key`,`voice`,`emotion`,`ill`,`drunk`,`robot`],voice:[`jane`,`zahar`],emotion:[`none`,`good`,`neutral`,`evil`,`mixed`]},ru_YA_CLOUD:{name:`Yandex Cloud - Русский`,engine:`yandexCloud`,params:[`key`,`folderID`,`voice`,`emotion`],voice:[`alyss`,`oksana`,`jane`,`zahar`],emotion:[`good`,`neutral`,`evil`]},"en-US":{name:`PicoTTS - Englisch US`,engine:`PicoTTS`,params:[]},"en-GB":{name:`PicoTTS - Englisch GB`,engine:`PicoTTS`,params:[]},"de-DE":{name:`PicoTTS - Deutsch`,engine:`PicoTTS`,params:[]},"it-IT":{name:`PicoTTS - Italiano`,engine:`PicoTTS`,params:[]},"es-ES":{name:`PicoTTS - Espaniol`,engine:`PicoTTS`,params:[]},"fr-FR":{name:`PicoTTS - Français`,engine:`PicoTTS`,params:[]},"ru-RU_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`ru-RU`,ename:`Tatyana`,ssml:!0,name:`Cloud - Русский - Татьяна`},"ru-RU_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`ru-RU`,ename:`Maxim`,ssml:!0,name:`Cloud - Русский - Максим`},"de-DE_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`de-DE`,ename:`Marlene`,ssml:!0,name:`Cloud - Deutsch - Marlene`},"de-DE_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`de-DE`,ename:`Hans`,ssml:!0,name:`Cloud - Deutsch - Hans`},"en-US_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Salli`,ssml:!0,name:`Cloud - en-US - Female - Salli`},"en-US_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Joey`,ssml:!0,name:`Cloud - en-US - Male - Joey`},"da-DK_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`da-DK`,ename:`Naja`,ssml:!0,name:`Cloud - da-DK - Female - Naja`},"da-DK_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`da-DK`,ename:`Mads`,ssml:!0,name:`Cloud - da-DK - Male - Mads`},"en-AU_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-AU`,ename:`Nicole`,ssml:!0,name:`Cloud - en-AU - Female - Nicole`},"en-AU_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-AU`,ename:`Russell`,ssml:!0,name:`Cloud - en-AU - Male - Russell`},"en-GB_CLOUD_Female_Amy":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-GB`,ename:`Amy`,ssml:!0,name:`Cloud - en-GB - Female - Amy`},"en-GB_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-GB`,ename:`Brian`,ssml:!0,name:`Cloud - en-GB - Male - Brian`},"en-GB_CLOUD_Female_Emma":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-GB`,ename:`Emma`,ssml:!0,name:`Cloud - en-GB - Female - Emma`},"en-GB-WLS_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-GB-WLS`,ename:`Gwyneth`,ssml:!0,name:`Cloud - en-GB-WLS - Female - Gwyneth`},"en-GB-WLS_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-GB-WLS`,ename:`Geraint`,ssml:!0,name:`Cloud - en-GB-WLS - Male - Geraint`},"cy-GB_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`cy-GB`,ename:`Gwyneth`,ssml:!0,name:`Cloud - cy-GB - Female - Gwyneth`},"cy-GB_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`cy-GB`,ename:`Geraint`,ssml:!0,name:`Cloud - cy-GB - Male - Geraint`},"en-IN_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-IN`,ename:`Raveena`,ssml:!0,name:`Cloud - en-IN - Female - Raveena`},"en-US_CLOUD_Male_Chipmunk":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Chipmunk`,ssml:!0,name:`Cloud - en-US - Male - Chipmunk`},"en-US_CLOUD_Male_Eric":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Eric`,ssml:!0,name:`Cloud - en-US - Male - Eric`},"en-US_CLOUD_Female_Ivy":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Ivy`,ssml:!0,name:`Cloud - en-US - Female - Ivy`},"en-US_CLOUD_Female_Jennifer":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Jennifer`,ssml:!0,name:`Cloud - en-US - Female - Jennifer`},"en-US_CLOUD_Male_Justin":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Justin`,ssml:!0,name:`Cloud - en-US - Male - Justin`},"en-US_CLOUD_Female_Kendra":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Kendra`,ssml:!0,name:`Cloud - en-US - Female - Kendra`},"en-US_CLOUD_Female_Kimberly":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Kimberly`,ssml:!0,name:`Cloud - en-US - Female - Kimberly`},"es-ES_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`es-ES`,ename:`Conchita`,ssml:!0,name:`Cloud - es-ES - Female - Conchita`},"es-ES_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`es-ES`,ename:`Enrique`,ssml:!0,name:`Cloud - es-ES - Male - Enrique`},"es-US_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`es-US`,ename:`Penelope`,ssml:!0,name:`Cloud - es-US - Female - Penelope`},"es-US_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`es-US`,ename:`Miguel`,ssml:!0,name:`Cloud - es-US - Male - Miguel`},"fr-CA_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`fr-CA`,ename:`Chantal`,ssml:!0,name:`Cloud - fr-CA - Female - Chantal`},"fr-FR_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`fr-FR`,ename:`Celine`,ssml:!0,name:`Cloud - fr-FR - Female - Celine`},"fr-FR_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`fr-FR`,ename:`Mathieu`,ssml:!0,name:`Cloud - fr-FR - Male - Mathieu`},"is-IS_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`is-IS`,ename:`Dora`,ssml:!0,name:`Cloud - is-IS - Female - Dora`},"is-IS_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`is-IS`,ename:`Karl`,ssml:!0,name:`Cloud - is-IS - Male - Karl`},"it-IT_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`it-IT`,ename:`Carla`,ssml:!0,name:`Cloud - it-IT - Female - Carla`},"it-IT_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`it-IT`,ename:`Giorgio`,ssml:!0,name:`Cloud - it-IT - Male - Giorgio`},"nb-NO_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`nb-NO`,ename:`Liv`,ssml:!0,name:`Cloud - nb-NO - Female - Liv`},"nl-NL_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`nl-NL`,ename:`Lotte`,ssml:!0,name:`Cloud - nl-NL - Female - Lotte`},"nl-NL_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`nl-NL`,ename:`Ruben`,ssml:!0,name:`Cloud - nl-NL - Male - Ruben`},"pl-PL_CLOUD_Female_Agnieszka":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Agnieszka`,ssml:!0,name:`Cloud - pl-PL - Female - Agnieszka`},"pl-PL_CLOUD_Male_Jacek":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Jacek`,ssml:!0,name:`Cloud - pl-PL - Male - Jacek`},"pl-PL_CLOUD_Female_Ewa":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Ewa`,ssml:!0,name:`Cloud - pl-PL - Female - Ewa`},"pl-PL_CLOUD_Male_Jan":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Jan`,ssml:!0,name:`Cloud - pl-PL - Male - Jan`},"pl-PL_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Maja`,ssml:!0,name:`Cloud - pl-PL - Female - Maja`},"pt-BR_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pt-BR`,ename:`Vitoria`,ssml:!0,name:`Cloud - pt-BR - Female - Vitoria`},"pt-BR_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pt-BR`,ename:`Ricardo`,ssml:!0,name:`Cloud - pt-BR - Male - Ricardo`},"pt-PT_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pt-PT`,ename:`Cristiano`,ssml:!0,name:`Cloud - pt-PT - Male - Cristiano`},"pt-PT_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pt-PT`,ename:`Ines`,ssml:!0,name:`Cloud - pt-PT - Female - Ines`},"ro-RO_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`ro-RO`,ename:`Carmen`,ssml:!0,name:`Cloud - ro-RO - Female - Carmen`},"sv-SE_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`sv-SE`,ename:`Astrid`,ssml:!0,name:`Cloud - sv-SE - Female - Astrid`},"tr-TR_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`tr-TR`,ename:`Filiz`,ssml:!0,name:`Cloud - tr-TR - Female - Filiz`},"ru-RU_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`ru-RU`,ename:`Tatyana`,ssml:!0,name:`AWS Polly - Русский - Татьяна`},"ru-RU_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`ru-RU`,ename:`Maxim`,ssml:!0,name:`AWS Polly - Русский - Максим`},"de-DE_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`de-DE`,ename:`Marlene`,ssml:!0,name:`AWS Polly - Deutsch - Marlene`},"de-DE_AP_Female_Vicky":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`de-DE`,ename:`Vicky`,ssml:!0,name:`AWS Polly - Deutsch - Vicky`},"de-DE_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`de-DE`,ename:`Hans`,ssml:!0,name:`AWS Polly - Deutsch - Hans`},"en-US_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Salli`,ssml:!0,name:`AWS Polly - en-US - Female - Salli`},"en-US_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Joey`,ssml:!0,name:`AWS Polly - en-US - Male - Joey`},"da-DK_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`da-DK`,ename:`Naja`,ssml:!0,name:`AWS Polly - da-DK - Female - Naja`},"da-DK_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`da-DK`,ename:`Mads`,ssml:!0,name:`AWS Polly - da-DK - Male - Mads`},"en-AU_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-AU`,ename:`Nicole`,ssml:!0,name:`AWS Polly - en-AU - Female - Nicole`},"en-AU_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-AU`,ename:`Russell`,ssml:!0,name:`AWS Polly - en-AU - Male - Russell`},"en-GB_AP_Female_Amy":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB`,ename:`Amy`,ssml:!0,name:`AWS Polly - en-GB - Female - Amy`},"en-GB_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB`,ename:`Brian`,ssml:!0,name:`AWS Polly - en-GB - Male - Brian`},"en-GB_AP_Female_Emma":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB`,ename:`Emma`,ssml:!0,name:`AWS Polly - en-GB - Female - Emma`},"en-GB-WLS_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB-WLS`,ename:`Gwyneth`,ssml:!0,name:`AWS Polly - en-GB-WLS - Female - Gwyneth`},"en-GB-WLS_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB-WLS`,ename:`Geraint`,ssml:!0,name:`AWS Polly - en-GB-WLS - Male - Geraint`},"cy-GB_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`cy-GB`,ename:`Gwyneth`,ssml:!0,name:`AWS Polly - cy-GB - Female - Gwyneth`},"cy-GB_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`cy-GB`,ename:`Geraint`,ssml:!0,name:`AWS Polly - cy-GB - Male - Geraint`},"en-IN_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-IN`,ename:`Raveena`,ssml:!0,name:`AWS Polly - en-IN - Female - Raveena`},"en-US_AP_Male_Chipmunk":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Chipmunk`,ssml:!0,name:`AWS Polly - en-US - Male - Chipmunk`},"en-US_AP_Male_Eric":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Eric`,ssml:!0,name:`AWS Polly - en-US - Male - Eric`},"en-US_AP_Female_Ivy":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Ivy`,ssml:!0,name:`AWS Polly - en-US - Female - Ivy`},"en-US_AP_Female_Jennifer":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Jennifer`,ssml:!0,name:`AWS Polly - en-US - Female - Jennifer`},"en-US_AP_Male_Justin":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Justin`,ssml:!0,name:`AWS Polly - en-US - Male - Justin`},"en-US_AP_Female_Kendra":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Kendra`,ssml:!0,name:`AWS Polly - en-US - Female - Kendra`},"en-US_AP_Female_Kimberly":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Kimberly`,ssml:!0,name:`AWS Polly - en-US - Female - Kimberly`},"es-ES_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-ES`,ename:`Conchita`,ssml:!0,name:`AWS Polly - es-ES - Female - Conchita`},"es-ES_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-ES`,ename:`Enrique`,ssml:!0,name:`AWS Polly - es-ES - Male - Enrique`},"es-US_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-US`,ename:`Penelope`,ssml:!0,name:`AWS Polly - es-US - Female - Penelope`},"es-US_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-US`,ename:`Miguel`,ssml:!0,name:`AWS Polly - es-US - Male - Miguel`},"fr-CA_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`fr-CA`,ename:`Chantal`,ssml:!0,name:`AWS Polly - fr-CA - Female - Chantal`},"fr-FR_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`fr-FR`,ename:`Celine`,ssml:!0,name:`AWS Polly - fr-FR - Female - Celine`},"fr-FR_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`fr-FR`,ename:`Mathieu`,ssml:!0,name:`AWS Polly - fr-FR - Male - Mathieu`},"is-IS_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`is-IS`,ename:`Dora`,ssml:!0,name:`AWS Polly - is-IS - Female - Dora`},"is-IS_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`is-IS`,ename:`Karl`,ssml:!0,name:`AWS Polly - is-IS - Male - Karl`},"it-IT_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`it-IT`,ename:`Carla`,ssml:!0,name:`AWS Polly - it-IT - Female - Carla`},"it-IT_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`it-IT`,ename:`Giorgio`,ssml:!0,name:`AWS Polly - it-IT - Male - Giorgio`},"nb-NO_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`nb-NO`,ename:`Liv`,ssml:!0,name:`AWS Polly - nb-NO - Female - Liv`},"nl-NL_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`nl-NL`,ename:`Lotte`,ssml:!0,name:`AWS Polly - nl-NL - Female - Lotte`},"nl-NL_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`nl-NL`,ename:`Ruben`,ssml:!0,name:`AWS Polly - nl-NL - Male - Ruben`},"pl-PL_AP_Female_Agnieszka":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Agnieszka`,ssml:!0,name:`AWS Polly - pl-PL - Female - Agnieszka`},"pl-PL_AP_Male_Jacek":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Jacek`,ssml:!0,name:`AWS Polly - pl-PL - Male - Jacek`},"pl-PL_AP_Female_Ewa":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Ewa`,ssml:!0,name:`AWS Polly - pl-PL - Female - Ewa`},"pl-PL_AP_Male_Jan":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Jan`,ssml:!0,name:`AWS Polly - pl-PL - Male - Jan`},"pl-PL_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Maja`,ssml:!0,name:`AWS Polly - pl-PL - Female - Maja`},"pt-BR_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-BR`,ename:`Vitoria`,ssml:!0,name:`AWS Polly - pt-BR - Female - Vitoria`},"pt-BR_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-BR`,ename:`Ricardo`,ssml:!0,name:`AWS Polly - pt-BR - Male - Ricardo`},"pt-PT_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-PT`,ename:`Cristiano`,ssml:!0,name:`AWS Polly - pt-PT - Male - Cristiano`},"pt-PT_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-PT`,ename:`Ines`,ssml:!0,name:`AWS Polly - pt-PT - Female - Ines`},"ro-RO_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`ro-RO`,ename:`Carmen`,ssml:!0,name:`AWS Polly - ro-RO - Female - Carmen`},"sv-SE_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`sv-SE`,ename:`Astrid`,ssml:!0,name:`AWS Polly - sv-SE - Female - Astrid`},"tr-TR_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`tr-TR`,ename:`Filiz`,ssml:!0,name:`AWS Polly - tr-TR - Female - Filiz`}},re=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return e.text?`// Sayit ${e.text||``}
1
+ import{o as e,t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,Ft as r,Gt as i,Hn as a,Ir as o,Zt as s,cn as c,dn as l,fn as u,g as d,j as f,ln as p,lr as m,m as h,pr as g,rn as _,sr as v,t as y,un as b,ur as x,vn as S,y as C}from"./_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__57338878793567__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-8WiAnp-r.js";import{a as w,b as T,c as E,d as D,f as O,g as k,h as A,i as j,l as M,n as N,o as P,r as F,s as ee,t as te,u as I,v as L,y as R}from"./Compile-CHnsUZ3H.js";import{n as z,r as ne}from"./dist-CSJEdwl2.js";var B={en:{name:`Google - English`,engine:`google`,params:[]},de:{name:`Google - Deutsch`,engine:`google`,params:[]},ru:{name:`Google - Русский`,engine:`google`,params:[]},it:{name:`Google - Italiano`,engine:`google`,params:[]},es:{name:`Google - Espaniol`,engine:`google`,params:[]},fr:{name:`Google - Français`,engine:`google`,params:[]},ru_YA:{name:`Yandex - Русский`,engine:`yandex`,params:[`key`,`voice`,`emotion`,`ill`,`drunk`,`robot`],voice:[`jane`,`zahar`],emotion:[`none`,`good`,`neutral`,`evil`,`mixed`]},ru_YA_CLOUD:{name:`Yandex Cloud - Русский`,engine:`yandexCloud`,params:[`key`,`folderID`,`voice`,`emotion`],voice:[`alyss`,`oksana`,`jane`,`zahar`],emotion:[`good`,`neutral`,`evil`]},"en-US":{name:`PicoTTS - Englisch US`,engine:`PicoTTS`,params:[]},"en-GB":{name:`PicoTTS - Englisch GB`,engine:`PicoTTS`,params:[]},"de-DE":{name:`PicoTTS - Deutsch`,engine:`PicoTTS`,params:[]},"it-IT":{name:`PicoTTS - Italiano`,engine:`PicoTTS`,params:[]},"es-ES":{name:`PicoTTS - Espaniol`,engine:`PicoTTS`,params:[]},"fr-FR":{name:`PicoTTS - Français`,engine:`PicoTTS`,params:[]},"ru-RU_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`ru-RU`,ename:`Tatyana`,ssml:!0,name:`Cloud - Русский - Татьяна`},"ru-RU_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`ru-RU`,ename:`Maxim`,ssml:!0,name:`Cloud - Русский - Максим`},"de-DE_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`de-DE`,ename:`Marlene`,ssml:!0,name:`Cloud - Deutsch - Marlene`},"de-DE_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`de-DE`,ename:`Hans`,ssml:!0,name:`Cloud - Deutsch - Hans`},"en-US_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Salli`,ssml:!0,name:`Cloud - en-US - Female - Salli`},"en-US_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Joey`,ssml:!0,name:`Cloud - en-US - Male - Joey`},"da-DK_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`da-DK`,ename:`Naja`,ssml:!0,name:`Cloud - da-DK - Female - Naja`},"da-DK_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`da-DK`,ename:`Mads`,ssml:!0,name:`Cloud - da-DK - Male - Mads`},"en-AU_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-AU`,ename:`Nicole`,ssml:!0,name:`Cloud - en-AU - Female - Nicole`},"en-AU_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-AU`,ename:`Russell`,ssml:!0,name:`Cloud - en-AU - Male - Russell`},"en-GB_CLOUD_Female_Amy":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-GB`,ename:`Amy`,ssml:!0,name:`Cloud - en-GB - Female - Amy`},"en-GB_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-GB`,ename:`Brian`,ssml:!0,name:`Cloud - en-GB - Male - Brian`},"en-GB_CLOUD_Female_Emma":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-GB`,ename:`Emma`,ssml:!0,name:`Cloud - en-GB - Female - Emma`},"en-GB-WLS_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-GB-WLS`,ename:`Gwyneth`,ssml:!0,name:`Cloud - en-GB-WLS - Female - Gwyneth`},"en-GB-WLS_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-GB-WLS`,ename:`Geraint`,ssml:!0,name:`Cloud - en-GB-WLS - Male - Geraint`},"cy-GB_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`cy-GB`,ename:`Gwyneth`,ssml:!0,name:`Cloud - cy-GB - Female - Gwyneth`},"cy-GB_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`cy-GB`,ename:`Geraint`,ssml:!0,name:`Cloud - cy-GB - Male - Geraint`},"en-IN_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-IN`,ename:`Raveena`,ssml:!0,name:`Cloud - en-IN - Female - Raveena`},"en-US_CLOUD_Male_Chipmunk":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Chipmunk`,ssml:!0,name:`Cloud - en-US - Male - Chipmunk`},"en-US_CLOUD_Male_Eric":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Eric`,ssml:!0,name:`Cloud - en-US - Male - Eric`},"en-US_CLOUD_Female_Ivy":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Ivy`,ssml:!0,name:`Cloud - en-US - Female - Ivy`},"en-US_CLOUD_Female_Jennifer":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Jennifer`,ssml:!0,name:`Cloud - en-US - Female - Jennifer`},"en-US_CLOUD_Male_Justin":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Justin`,ssml:!0,name:`Cloud - en-US - Male - Justin`},"en-US_CLOUD_Female_Kendra":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Kendra`,ssml:!0,name:`Cloud - en-US - Female - Kendra`},"en-US_CLOUD_Female_Kimberly":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`en-US`,ename:`Kimberly`,ssml:!0,name:`Cloud - en-US - Female - Kimberly`},"es-ES_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`es-ES`,ename:`Conchita`,ssml:!0,name:`Cloud - es-ES - Female - Conchita`},"es-ES_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`es-ES`,ename:`Enrique`,ssml:!0,name:`Cloud - es-ES - Male - Enrique`},"es-US_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`es-US`,ename:`Penelope`,ssml:!0,name:`Cloud - es-US - Female - Penelope`},"es-US_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`es-US`,ename:`Miguel`,ssml:!0,name:`Cloud - es-US - Male - Miguel`},"fr-CA_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`fr-CA`,ename:`Chantal`,ssml:!0,name:`Cloud - fr-CA - Female - Chantal`},"fr-FR_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`fr-FR`,ename:`Celine`,ssml:!0,name:`Cloud - fr-FR - Female - Celine`},"fr-FR_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`fr-FR`,ename:`Mathieu`,ssml:!0,name:`Cloud - fr-FR - Male - Mathieu`},"is-IS_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`is-IS`,ename:`Dora`,ssml:!0,name:`Cloud - is-IS - Female - Dora`},"is-IS_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`is-IS`,ename:`Karl`,ssml:!0,name:`Cloud - is-IS - Male - Karl`},"it-IT_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`it-IT`,ename:`Carla`,ssml:!0,name:`Cloud - it-IT - Female - Carla`},"it-IT_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`it-IT`,ename:`Giorgio`,ssml:!0,name:`Cloud - it-IT - Male - Giorgio`},"nb-NO_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`nb-NO`,ename:`Liv`,ssml:!0,name:`Cloud - nb-NO - Female - Liv`},"nl-NL_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`nl-NL`,ename:`Lotte`,ssml:!0,name:`Cloud - nl-NL - Female - Lotte`},"nl-NL_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`nl-NL`,ename:`Ruben`,ssml:!0,name:`Cloud - nl-NL - Male - Ruben`},"pl-PL_CLOUD_Female_Agnieszka":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Agnieszka`,ssml:!0,name:`Cloud - pl-PL - Female - Agnieszka`},"pl-PL_CLOUD_Male_Jacek":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Jacek`,ssml:!0,name:`Cloud - pl-PL - Male - Jacek`},"pl-PL_CLOUD_Female_Ewa":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Ewa`,ssml:!0,name:`Cloud - pl-PL - Female - Ewa`},"pl-PL_CLOUD_Male_Jan":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Jan`,ssml:!0,name:`Cloud - pl-PL - Male - Jan`},"pl-PL_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pl-PL`,ename:`Maja`,ssml:!0,name:`Cloud - pl-PL - Female - Maja`},"pt-BR_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pt-BR`,ename:`Vitoria`,ssml:!0,name:`Cloud - pt-BR - Female - Vitoria`},"pt-BR_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pt-BR`,ename:`Ricardo`,ssml:!0,name:`Cloud - pt-BR - Male - Ricardo`},"pt-PT_CLOUD_Male":{gender:`Male`,engine:`cloud`,params:[`cloud`],language:`pt-PT`,ename:`Cristiano`,ssml:!0,name:`Cloud - pt-PT - Male - Cristiano`},"pt-PT_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`pt-PT`,ename:`Ines`,ssml:!0,name:`Cloud - pt-PT - Female - Ines`},"ro-RO_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`ro-RO`,ename:`Carmen`,ssml:!0,name:`Cloud - ro-RO - Female - Carmen`},"sv-SE_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`sv-SE`,ename:`Astrid`,ssml:!0,name:`Cloud - sv-SE - Female - Astrid`},"tr-TR_CLOUD_Female":{gender:`Female`,engine:`cloud`,params:[`cloud`],language:`tr-TR`,ename:`Filiz`,ssml:!0,name:`Cloud - tr-TR - Female - Filiz`},"ru-RU_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`ru-RU`,ename:`Tatyana`,ssml:!0,name:`AWS Polly - Русский - Татьяна`},"ru-RU_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`ru-RU`,ename:`Maxim`,ssml:!0,name:`AWS Polly - Русский - Максим`},"de-DE_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`de-DE`,ename:`Marlene`,ssml:!0,name:`AWS Polly - Deutsch - Marlene`},"de-DE_AP_Female_Vicky":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`de-DE`,ename:`Vicky`,ssml:!0,name:`AWS Polly - Deutsch - Vicky`},"de-DE_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`de-DE`,ename:`Hans`,ssml:!0,name:`AWS Polly - Deutsch - Hans`},"en-US_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Salli`,ssml:!0,name:`AWS Polly - en-US - Female - Salli`},"en-US_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Joey`,ssml:!0,name:`AWS Polly - en-US - Male - Joey`},"da-DK_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`da-DK`,ename:`Naja`,ssml:!0,name:`AWS Polly - da-DK - Female - Naja`},"da-DK_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`da-DK`,ename:`Mads`,ssml:!0,name:`AWS Polly - da-DK - Male - Mads`},"en-AU_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-AU`,ename:`Nicole`,ssml:!0,name:`AWS Polly - en-AU - Female - Nicole`},"en-AU_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-AU`,ename:`Russell`,ssml:!0,name:`AWS Polly - en-AU - Male - Russell`},"en-GB_AP_Female_Amy":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB`,ename:`Amy`,ssml:!0,name:`AWS Polly - en-GB - Female - Amy`},"en-GB_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB`,ename:`Brian`,ssml:!0,name:`AWS Polly - en-GB - Male - Brian`},"en-GB_AP_Female_Emma":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB`,ename:`Emma`,ssml:!0,name:`AWS Polly - en-GB - Female - Emma`},"en-GB-WLS_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB-WLS`,ename:`Gwyneth`,ssml:!0,name:`AWS Polly - en-GB-WLS - Female - Gwyneth`},"en-GB-WLS_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-GB-WLS`,ename:`Geraint`,ssml:!0,name:`AWS Polly - en-GB-WLS - Male - Geraint`},"cy-GB_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`cy-GB`,ename:`Gwyneth`,ssml:!0,name:`AWS Polly - cy-GB - Female - Gwyneth`},"cy-GB_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`cy-GB`,ename:`Geraint`,ssml:!0,name:`AWS Polly - cy-GB - Male - Geraint`},"en-IN_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-IN`,ename:`Raveena`,ssml:!0,name:`AWS Polly - en-IN - Female - Raveena`},"en-US_AP_Male_Chipmunk":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Chipmunk`,ssml:!0,name:`AWS Polly - en-US - Male - Chipmunk`},"en-US_AP_Male_Eric":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Eric`,ssml:!0,name:`AWS Polly - en-US - Male - Eric`},"en-US_AP_Female_Ivy":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Ivy`,ssml:!0,name:`AWS Polly - en-US - Female - Ivy`},"en-US_AP_Female_Jennifer":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Jennifer`,ssml:!0,name:`AWS Polly - en-US - Female - Jennifer`},"en-US_AP_Male_Justin":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Justin`,ssml:!0,name:`AWS Polly - en-US - Male - Justin`},"en-US_AP_Female_Kendra":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Kendra`,ssml:!0,name:`AWS Polly - en-US - Female - Kendra`},"en-US_AP_Female_Kimberly":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`en-US`,ename:`Kimberly`,ssml:!0,name:`AWS Polly - en-US - Female - Kimberly`},"es-ES_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-ES`,ename:`Conchita`,ssml:!0,name:`AWS Polly - es-ES - Female - Conchita`},"es-ES_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-ES`,ename:`Enrique`,ssml:!0,name:`AWS Polly - es-ES - Male - Enrique`},"es-US_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-US`,ename:`Penelope`,ssml:!0,name:`AWS Polly - es-US - Female - Penelope`},"es-US_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`es-US`,ename:`Miguel`,ssml:!0,name:`AWS Polly - es-US - Male - Miguel`},"fr-CA_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`fr-CA`,ename:`Chantal`,ssml:!0,name:`AWS Polly - fr-CA - Female - Chantal`},"fr-FR_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`fr-FR`,ename:`Celine`,ssml:!0,name:`AWS Polly - fr-FR - Female - Celine`},"fr-FR_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`fr-FR`,ename:`Mathieu`,ssml:!0,name:`AWS Polly - fr-FR - Male - Mathieu`},"is-IS_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`is-IS`,ename:`Dora`,ssml:!0,name:`AWS Polly - is-IS - Female - Dora`},"is-IS_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`is-IS`,ename:`Karl`,ssml:!0,name:`AWS Polly - is-IS - Male - Karl`},"it-IT_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`it-IT`,ename:`Carla`,ssml:!0,name:`AWS Polly - it-IT - Female - Carla`},"it-IT_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`it-IT`,ename:`Giorgio`,ssml:!0,name:`AWS Polly - it-IT - Male - Giorgio`},"nb-NO_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`nb-NO`,ename:`Liv`,ssml:!0,name:`AWS Polly - nb-NO - Female - Liv`},"nl-NL_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`nl-NL`,ename:`Lotte`,ssml:!0,name:`AWS Polly - nl-NL - Female - Lotte`},"nl-NL_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`nl-NL`,ename:`Ruben`,ssml:!0,name:`AWS Polly - nl-NL - Male - Ruben`},"pl-PL_AP_Female_Agnieszka":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Agnieszka`,ssml:!0,name:`AWS Polly - pl-PL - Female - Agnieszka`},"pl-PL_AP_Male_Jacek":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Jacek`,ssml:!0,name:`AWS Polly - pl-PL - Male - Jacek`},"pl-PL_AP_Female_Ewa":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Ewa`,ssml:!0,name:`AWS Polly - pl-PL - Female - Ewa`},"pl-PL_AP_Male_Jan":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Jan`,ssml:!0,name:`AWS Polly - pl-PL - Male - Jan`},"pl-PL_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pl-PL`,ename:`Maja`,ssml:!0,name:`AWS Polly - pl-PL - Female - Maja`},"pt-BR_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-BR`,ename:`Vitoria`,ssml:!0,name:`AWS Polly - pt-BR - Female - Vitoria`},"pt-BR_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-BR`,ename:`Ricardo`,ssml:!0,name:`AWS Polly - pt-BR - Male - Ricardo`},"pt-PT_AP_Male":{gender:`Male`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-PT`,ename:`Cristiano`,ssml:!0,name:`AWS Polly - pt-PT - Male - Cristiano`},"pt-PT_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`pt-PT`,ename:`Ines`,ssml:!0,name:`AWS Polly - pt-PT - Female - Ines`},"ro-RO_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`ro-RO`,ename:`Carmen`,ssml:!0,name:`AWS Polly - ro-RO - Female - Carmen`},"sv-SE_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`sv-SE`,ename:`Astrid`,ssml:!0,name:`AWS Polly - sv-SE - Female - Astrid`},"tr-TR_AP_Female":{gender:`Female`,engine:`polly`,params:[`accessKey`,`secretKey`,`region`],language:`tr-TR`,ename:`Filiz`,ssml:!0,name:`AWS Polly - tr-TR - Female - Filiz`}},re=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return e.text?`// Sayit ${e.text||``}
2
2
  \t\tconst subActionVar${e._id} = "${e.language&&e.language!==`_`?`${e.language};`:``}${e.volume?`${e.volume};`:``}${(e.text||``).replace(/"/g,`\\"`)}"${A.getReplacesInText(t)};
3
3
  \t\t_sendToFrontEnd(${e._id}, {text: subActionVar${e._id}});
4
4
  \t\tawait setStateAsync("${e.instance}.tts.text", subActionVar${e._id});`:`// no text defined
5
- _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`${_.t(`Say:`)} ${e.data.text}`}getSummary(){let{text:e,instance:t,volume:n}=this.state.settings;if(!e)return null;let r=[t,n&&Number(n)!==100?`${n}%`:void 0].filter(Boolean);return{title:String(e),subtitle:r.length?r.join(` · `):void 0}}onTagChange(){let e=_.getLanguage(),t=Object.keys(B).filter(t=>t.startsWith(e)).map(e=>({title:B[e].name,value:e}));t.unshift({title:`Default`,value:`_`}),this.setState({inputs:[{attr:`instance`,nameRender:`renderInstance`,adapter:`sayit`,defaultValue:`sayit.0`,frontText:`Instance:`},{nameRender:`renderSelect`,frontText:`Language:`,options:t,defaultValue:`_`,attr:`language`},{nameRender:`renderNameText`,defaultValue:`Volume`,attr:`textVol`},{nameRender:`renderSlider`,attr:`volume`,defaultValue:100,min:0,max:100},{attr:`text`,nameRender:`renderModalInput`,defaultValue:`Hallo`,nameBlock:``,frontText:`Text:`}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`actions`,name:`Say It`,id:`ActionSayText`,adapter:`sayit`,title:`Say some text via sayit adapter`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},ie=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=(e.text||``).replace(/"/g,`\\"`);return n?`// Pushover ${e.text||``}
5
+ _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`${h.t(`Say:`)} ${e.data.text}`}getSummary(){let{text:e,instance:t,volume:n}=this.state.settings;if(!e)return null;let r=[t,n&&Number(n)!==100?`${n}%`:void 0].filter(Boolean);return{title:String(e),subtitle:r.length?r.join(` · `):void 0}}onTagChange(){let e=h.getLanguage(),t=Object.keys(B).filter(t=>t.startsWith(e)).map(e=>({title:B[e].name,value:e}));t.unshift({title:`Default`,value:`_`}),this.setState({inputs:[{attr:`instance`,nameRender:`renderInstance`,adapter:`sayit`,defaultValue:`sayit.0`,frontText:`Instance:`},{nameRender:`renderSelect`,frontText:`Language:`,options:t,defaultValue:`_`,attr:`language`},{nameRender:`renderNameText`,defaultValue:`Volume`,attr:`textVol`},{nameRender:`renderSlider`,attr:`volume`,defaultValue:100,min:0,max:100},{attr:`text`,nameRender:`renderModalInput`,defaultValue:`Hallo`,nameBlock:``,frontText:`Text:`}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`actions`,name:`Say It`,id:`ActionSayText`,adapter:`sayit`,title:`Say some text via sayit adapter`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},ie=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=(e.text||``).replace(/"/g,`\\"`);return n?`// Pushover ${e.text||``}
6
6
  \t\tconst subActionVar${e._id} = "${n}"${A.getReplacesInText(t)};
7
7
  \t\t_sendToFrontEnd(${e._id}, {text: subActionVar${e._id}});
8
8
  \t\tsendTo("${e.instance}", "send", {
@@ -15,7 +15,7 @@ _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`Sen
15
15
  \t\tconst subActionVar${e._id} = "${(n||``).replace(/"/g,`\\"`)}"${A.getReplacesInText(t)};
16
16
  \t\t_sendToFrontEnd(${e._id}, {text: subActionVar${e._id}});
17
17
  \t\tsendTo("${e.instance}", "send", {text: subActionVar${e._id}${e.phone?`, phone: "${e.phone.replace(/"/g,`\\"`)}"`:``}});`:`// no text defined
18
- _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`${_.t(`Sent:`)} ${e.data.text}`}getSummary(){let{text:e,instance:t,phone:n}=this.state.settings;if(!e)return null;let r=[t,n].filter(Boolean);return{title:String(e),subtitle:r.length?r.join(` · `):void 0}}onTagChange(){this.setState({inputs:[{nameRender:`renderInstance`,adapter:`whatsapp-cmb`,frontText:`Instance:`,defaultValue:`whatsapp-cmb.0`,attr:`instance`},{nameRender:`renderModalInput`,attr:`text`,defaultValue:`Hello`,nameBlock:``,frontText:`Text:`},{nameRender:`renderText`,attr:`phone`,defaultValue:``,frontText:`Phone:`,backText:`(optional)`}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`actions`,name:`Whatsapp-cmb`,id:`ActionWhatsappcmb`,adapter:`whatsapp-cmb`,title:`Sends message via whatsapp-cmb`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},oe=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=(e.text||``).replace(/"/g,`\\"`);return n?`// Pushsafer ${e.text||``}
18
+ _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`${h.t(`Sent:`)} ${e.data.text}`}getSummary(){let{text:e,instance:t,phone:n}=this.state.settings;if(!e)return null;let r=[t,n].filter(Boolean);return{title:String(e),subtitle:r.length?r.join(` · `):void 0}}onTagChange(){this.setState({inputs:[{nameRender:`renderInstance`,adapter:`whatsapp-cmb`,frontText:`Instance:`,defaultValue:`whatsapp-cmb.0`,attr:`instance`},{nameRender:`renderModalInput`,attr:`text`,defaultValue:`Hello`,nameBlock:``,frontText:`Text:`},{nameRender:`renderText`,attr:`phone`,defaultValue:``,frontText:`Phone:`,backText:`(optional)`}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`actions`,name:`Whatsapp-cmb`,id:`ActionWhatsappcmb`,adapter:`whatsapp-cmb`,title:`Sends message via whatsapp-cmb`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},oe=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=(e.text||``).replace(/"/g,`\\"`);return n?`// Pushsafer ${e.text||``}
19
19
  \t\tconst subActionVar${e._id} = "${n}"${A.getReplacesInText(t)};
20
20
  \t\t_sendToFrontEnd(${e._id}, {text: subActionVar${e._id}});
21
21
  \t\tsendTo("${e.instance}", "send", {
@@ -25,12 +25,12 @@ _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`${_
25
25
  \t\t priority: ${e.priority},
26
26
  \t\t ${e.vibration&&e.vibration!==`_`?`vibration: ${e.vibration},`:``}
27
27
  \t\t});`:`// no text defined
28
- _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`Sent: ${e.data.text}`}getSummary(){let{text:e,title:t,instance:n,priority:r}=this.state.settings;if(!e)return null;let i=[n,this.optionTitle(`priority`,r)].filter(Boolean);return{kicker:t?String(t):void 0,title:String(e),subtitle:i.join(` · `)}}onTagChange(){this.setState({inputs:[{nameRender:`renderInstance`,adapter:`pushsafer`,frontText:`Instance:`,defaultValue:`pushsafer.0`,attr:`instance`},{nameRender:`renderModalInput`,attr:`text`,defaultValue:`Hello`,nameBlock:``,frontText:`Text:`},{nameRender:`renderText`,attr:`title`,defaultValue:`ioBroker`,frontText:`Title:`},{nameRender:`renderSelect`,attr:`sound`,defaultValue:`magic`,frontText:`Sound:`,doNotTranslate:!0,options:[{value:`_`,title:`Device Default`},{value:`0`,title:`Silent`},{value:`1`,title:`Ahem (IM)`},{value:`2`,title:`Applause (Mail)`},{value:`3`,title:`Arrow (Reminder)`},{value:`4`,title:`Baby (SMS)`},{value:`5`,title:`Bell (Alarm)`},{value:`6`,title:`Bicycle (Alarm2)`},{value:`7`,title:`Boing (Alarm3)`},{value:`8`,title:`Buzzer (Alarm4)`},{value:`9`,title:`Camera (Alarm5)`},{value:`10`,title:`Car Horn (Alarm6)`},{value:`11`,title:`Cash Register (Alarm7)`},{value:`12`,title:`Chime (Alarm8)`},{value:`13`,title:`Creaky Door (Alarm9)`},{value:`14`,title:`Cuckoo Clock (Alarm10)`},{value:`15`,title:`Disconnect (Call)`},{value:`16`,title:`Dog (Call2)`},{value:`17`,title:`Doorbell (Call3)`},{value:`18`,title:`Fanfare (Call4)`},{value:`19`,title:`Gun Shot (Call5)`},{value:`20`,title:`Honk (Call6)`},{value:`21`,title:`Jaw Harp (Call7)`},{value:`22`,title:`Morse (Call8)`},{value:`23`,title:`Electricity (Call9)`},{value:`24`,title:`Radio Tuner (Call10)`},{value:`25`,title:`Sirens`},{value:`26`,title:`Military Trumpets`},{value:`27`,title:`Ufo`},{value:`28`,title:`Whah Whah Whah`},{value:`29`,title:`Man Saying Goodbye`},{value:`30`,title:`Man Saying Hello`},{value:`31`,title:`Man Saying No`},{value:`32`,title:`Man Saying Ok`},{value:`33`,title:`Man Saying Ooohhhweee`},{value:`34`,title:`Man Saying Warning`},{value:`35`,title:`Man Saying Welcome`},{value:`36`,title:`Man Saying Yeah`},{value:`37`,title:`Man Saying Yes`},{value:`38`,title:`Beep short`},{value:`39`,title:`Weeeee short`},{value:`40`,title:`Cut in and out short`},{value:`41`,title:`Finger flicking glas short`},{value:`42`,title:`Wa Wa Waaaa short`},{value:`43`,title:`Laser short`},{value:`44`,title:`Wind Chime short`},{value:`45`,title:`Echo short`},{value:`46`,title:`Zipper short`},{value:`47`,title:`HiHat short`},{value:`48`,title:`Beep 2 short`},{value:`49`,title:`Beep 3 short`},{value:`50`,title:`Beep 4 short`},{value:`51`,title:`The Alarm is armed`},{value:`52`,title:`The Alarm is disarmed`},{value:`53`,title:`The Backup is ready`},{value:`54`,title:`The Door is closed`},{value:`55`,title:`The Door is opend`},{value:`56`,title:`The Window is closed`},{value:`57`,title:`The Window is open`},{value:`58`,title:`The Light is off`},{value:`59`,title:`The Light is on`},{value:`60`,title:`The Doorbell rings`},{value:`61`,title:`Pager short`},{value:`62`,title:`Pager long`}]},{nameRender:`renderSelect`,attr:`priority`,defaultValue:0,frontText:`Priority:`,options:[{value:-2,title:`lowest priority`},{value:-1,title:`lower priority`},{value:0,title:`normal priority`},{value:1,title:`high priority`},{value:2,title:`highest priority`}]},{nameRender:`renderSelect`,attr:`vibration`,defaultValue:0,frontText:`Vibration:`,options:[{value:`_`,title:`default`},{value:1,title:`1`},{value:2,title:`2`},{value:3,title:`3`}]}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`actions`,name:`Pushsafer`,id:`ActionPushsafer`,adapter:`pushsafer`,title:`Sends message via Pushsafer`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},se=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return te.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {trigger: true})`)}renderDebug(){return _.t(`Triggered`)}getSummary(){return{title:_.t(`On script save or adapter start`)}}onTagChange(e){this.setState({inputs:[{nameRender:`renderNameText`,defaultValue:`On script save or adapter start`,attr:`script`}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`triggers`,name:`Start script`,id:`TriggerScriptSave`,icon:`PlayArrow`,title:`Triggers the on script saving or the javascript instance restart`}}getData(){return e.getStaticData()}},ce=t(((e,t)=>{(function(){var n=Math.PI,r=Math.sin,i=Math.cos,a=Math.tan,o=Math.asin,s=Math.atan2,c=Math.acos,l=n/180,u=864e5,d=2440588,f=2451545;function p(e){return e.valueOf()/u-.5+d}function m(e){return new Date((e+.5-d)*u)}function h(e){return p(e)-f}var g=l*23.4397;function _(e,t){return s(r(e)*i(g)-a(t)*r(g),i(e))}function v(e,t){return o(r(t)*i(g)+i(t)*r(g)*r(e))}function y(e,t,n){return s(r(e),i(e)*r(t)-a(n)*i(t))}function b(e,t,n){return o(r(t)*r(n)+i(t)*i(n)*i(e))}function x(e,t){return l*(280.16+360.9856235*e)-t}function S(e){return e<0&&(e=0),2967e-7/Math.tan(e+.00312536/(e+.08901179))}function C(e){return l*(357.5291+.98560028*e)}function w(e){var t=l*(1.9148*r(e)+.02*r(2*e)+3e-4*r(3*e)),i=l*102.9372;return e+t+i+n}function T(e){var t=w(C(e));return{dec:v(t,0),ra:_(t,0)}}var E={};E.getPosition=function(e,t,n){var r=l*-n,i=l*t,a=h(e),o=T(a),s=x(a,r)-o.ra;return{azimuth:y(s,i,o.dec),altitude:b(s,i,o.dec)}};var D=E.times=[[-.833,`sunrise`,`sunset`],[-.3,`sunriseEnd`,`sunsetStart`],[-6,`dawn`,`dusk`],[-12,`nauticalDawn`,`nauticalDusk`],[-18,`nightEnd`,`night`],[6,`goldenHourEnd`,`goldenHour`]];E.addTime=function(e,t,n){D.push([e,t,n])};var O=9e-4;function k(e,t){return Math.round(e-O-t/(2*n))}function A(e,t,r){return O+(e+t)/(2*n)+r}function j(e,t,n){return f+e+.0053*r(t)-.0069*r(2*n)}function M(e,t,n){return c((r(e)-r(t)*r(n))/(i(t)*i(n)))}function N(e,t,n,r,i,a,o){return j(A(M(e,n,r),t,i),a,o)}E.getTimes=function(e,t,n){var r=l*-n,i=l*t,a=k(h(e),r),o=A(0,r,a),s=C(o),c=w(s),u=v(c,0),d=j(o,s,c),f,p,g,_,y,b={solarNoon:m(d),nadir:m(d+.5)};for(f=0,p=D.length;f<p;f+=1)g=D[f],_=N(g[0]*l,r,i,u,a,s,c),y=d-(_-d),b[g[1]]=m(y),b[g[2]]=m(_);return b};function P(e){var t=l*(218.316+13.176396*e),n=l*(134.963+13.064993*e),a=l*(93.272+13.22935*e),o=t+l*6.289*r(n),s=l*5.128*r(a),c=385001-20905*i(n);return{ra:_(o,s),dec:v(o,s),dist:c}}E.getMoonPosition=function(e,t,n){var o=l*-n,c=l*t,u=h(e),d=P(u),f=x(u,o)-d.ra,p=b(f,c,d.dec),m=s(r(f),a(c)*i(d.dec)-r(d.dec)*i(f));return p+=S(p),{azimuth:y(f,c,d.dec),altitude:p,distance:d.dist,parallacticAngle:m}},E.getMoonIllumination=function(e){var t=h(e||new Date),n=T(t),a=P(t),o=149598e3,l=c(r(n.dec)*r(a.dec)+i(n.dec)*i(a.dec)*i(n.ra-a.ra)),u=s(o*r(l),a.dist-o*i(l)),d=s(i(n.dec)*r(n.ra-a.ra),r(n.dec)*i(a.dec)-i(n.dec)*r(a.dec)*i(n.ra-a.ra));return{fraction:(1+i(u))/2,phase:.5+.5*u*(d<0?-1:1)/Math.PI,angle:d}};function F(e,t){return new Date(e.valueOf()+t*u/24)}E.getMoonTimes=function(e,t,n,r){var i=new Date(e);r?i.setUTCHours(0,0,0,0):i.setHours(0,0,0,0);for(var a=.133*l,o=E.getMoonPosition(i,t,n).altitude-a,s,c,u,d,f,p,m,h,g,_,v,y,b,x=1;x<=24&&(s=E.getMoonPosition(F(i,x),t,n).altitude-a,c=E.getMoonPosition(F(i,x+1),t,n).altitude-a,f=(o+c)/2-s,p=(c-o)/2,m=-p/(2*f),h=(f*m+p)*m+s,g=p*p-4*f*s,_=0,g>=0&&(b=Math.sqrt(g)/(Math.abs(f)*2),v=m-b,y=m+b,Math.abs(v)<=1&&_++,Math.abs(y)<=1&&_++,v<-1&&(v=y)),_===1?o<0?u=x+v:d=x+v:_===2&&(u=x+(h<0?y:v),d=x+(h<0?v:y)),!(u&&d));x+=2)o=c;var S={};return u&&(S.rise=F(i,u)),d&&(S.set=F(i,d)),!u&&!d&&(S[h>0?`alwaysUp`:`alwaysDown`]=!0),S},typeof e==`object`&&t!==void 0?t.exports=E:window.SunCalc=E})()}));r();var V=e(ce(),1),le=`{"time":{"start":"00:00","end":"24:00","mode":"hours","interval":1},"period":{"days":1}}`,ue=class e extends A{constructor(t){super(t,e.getStaticData()),y(this,`coordinates`,null)}static compile(e,t){let n=``,r=t.justCheck?I:D;if(r=r.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {trigger: true})`),e.tagCard===`interval`)n=`setInterval(${r}, ${e.interval||1} * ${e.unit===`s`?1e3:e.unit===`m`?6e4:36e5});`;else if(e.tagCard===`cron`)n=`schedule("${e.cron}", ${r});`;else if(e.tagCard===`at`){var i;let[t,a]=(e.at||``).split(`:`),o=`*`;if(e!=null&&(i=e.dow)!=null&&i.length&&!e.dow.includes(`_`)){let t=[...e.dow].map(e=>parseInt(e,10));t.sort();let n=[],r=t[0],i=1;for(;i<t.length;i++)t[i]-t[i-1]>1?(r===t[i-1]?n.push(r.toString()):t[i-1]-r===1?n.push(`${r},${t[i-1]}`):n.push(`${r}-${t[i-1]}`),r=t[i]):i===t.length-1&&(r===t[i-1]||t[i]-r===1?n.push(`${r},${t[i]}`):n.push(`${r}-${t[i]}`));o=n.join(`,`)}n=`schedule("${a||`0`} ${t||`0`} * * ${o}", ${r});`}else e.tagCard===`astro`?n=`schedule({astro: "${e.astro}", shift: ${e.offset?e.offsetValue:0}}, ${r});`:e.tagCard===`wizard`&&(n=`schedule('${e.wizard}', ${r});`);return n}static _time2String(e){return e?`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}`:`--:--`}async _setAstro(t,n,r){if(t||=this.state.settings.astro||`solarNoon`,n??=this.state.settings.offset,r??=this.state.settings.offsetValue,r=parseInt(r,10)||0,!this.coordinates){var i,a;let e=await this.props.socket.getObject(`system.adapter.javascript.0`),t=e==null||(i=e.native)==null?void 0:i.latitude,n=e==null||(a=e.native)==null?void 0:a.longitude;if(!t&&!n){let e=await this.props.socket.getObject(`system.config`);this.coordinates=e!=null&&e.common&&(e.common.latitude||e.common.longitude)?{latitude:parseFloat(e.common.latitude),longitude:parseFloat(e.common.longitude)}:null}else this.coordinates={latitude:parseFloat(t),longitude:parseFloat(n)}}let o=this.coordinates&&V.default.getTimes(new Date,this.coordinates.latitude,this.coordinates.longitude),s=o?Object.keys(o).map(t=>({value:t,title:t,title2:`[${e._time2String(o[t])}]`,order:o?e._time2String(o[t]):`??:??`})):[];s.sort((e,t)=>e.order>t.order?1:e.order<t.order?-1:0);let c=`--:--`;if(t&&o&&o[t]){let i=new Date(o[t]);n&&i.setMinutes(i.getMinutes()+parseInt(r,10)),c=_.t(`(at %s)`,e._time2String(i))}let l;l=n?[{frontText:`at`,attr:`astro`,nameRender:`renderSelect`,options:s,defaultValue:`solarNoon`,doNotTranslate2:!0},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{backText:r===1?`minute`:`minutes`,frontText:`offset`,nameRender:`renderNumber`,defaultValue:0,attr:`offsetValue`,noHelperText:!0},{nameRender:`renderNameText`,attr:`textTime`,defaultValue:c,doNotTranslate:!0}]:[{frontText:`at`,attr:`astro`,nameRender:`renderSelect`,options:s,doNotTranslate2:!0,defaultValue:`solarNoon`},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{nameRender:`renderNameText`,attr:`textTime1`,defaultValue:c,doNotTranslate:!0}],this.setState({inputs:l},()=>super.onTagChange())}_setInterval(e){e=parseInt(e||this.state.settings.interval,10)||30;let t;t=e===1?[{value:`s`,title:`second`},{value:`m`,title:`minute`},{value:`h`,title:`hour`}]:[{value:`s`,title:`seconds`},{value:`m`,title:`minutes`},{value:`h`,title:`hours`}],this.setState({inputs:[{nameRender:`renderNumber`,attr:`interval`,frontText:`every`,defaultValue:30,className:`block-input-interval`},{nameRender:`renderSelect`,attr:`unit`,defaultValue:`s`,options:t}]},()=>super.onTagChange())}renderDebug(e){return _.t(`Triggered`)}onValueChanged(e,t){this.state.settings.tagCard===`astro`?t===`astro`?this._setAstro(e):t===`offset`?this._setAstro(void 0,e):t===`offsetValue`&&this._setAstro(void 0,void 0,e):this.state.settings.tagCard===`interval`&&t===`interval`&&this._setInterval(e)}renderCron(e,t,n){let{className:r}=this.props;return g(`div`,{children:[g(`div`,{style:{display:`flex`,alignItems:`baseline`},children:[u(`div`,{style:{width:`100%`},children:this.renderText({nameRender:`renderText`,attr:`cron`,defaultValue:t},this.state.settings.cron||t,n)}),u(T,{square:!0,style:{marginLeft:7},value:`...`,className:r,onClick:()=>this.setState({openDialog:!0,textCron:this.state.settings.cron})})]}),this.state.openDialog?u(L,{disabled:this.state.settings.cron===this.state.textCron,onApply:()=>{let e=this.state.textCron;n(e,`cron`,()=>{n(C(e,_.getLanguage()),`addText`),this.setState({openDialog:!1})})},onClose:()=>this.setState({openDialog:!1,textCron:``}),children:u(x,{cronExpression:this.state.settings.cron,onChange:e=>this.setState({textCron:e}),language:_.getLanguage()})}):null,this.renderNameText({nameRender:`renderNameText`,defaultValue:_.t(`every hour at 0 minutes`),attr:`addText`,signature:!0,doNotTranslate:!0},this.state.settings.addText||_.t(`every hour at 0 minutes`))]},`cron`)}renderWizard(e,t,n){let{className:r}=this.props;return g(`div`,{children:[g(`div`,{style:{display:`flex`,alignItems:`center`,marginTop:7},children:[u(R,{className:r,autoComplete:`off`,fullWidth:!0,variant:`outlined`,size:`small`,multiline:!0,rows:2,value:this.state.settings.wizardText,onChange:e=>n(e),customValue:!0}),u(T,{square:!0,style:{marginLeft:7},value:`...`,className:r,onClick:()=>this.setState({openDialog:!0,wizard:this.state.settings.wizard,wizardText:p.state2text(this.state.settings.wizard)})})]}),this.state.openDialog?u(L,{disabled:this.state.settings.wizard===this.state.wizard,onApply:()=>this.setState({openDialog:!1},()=>{let e=JSON.parse(this.state.wizard);e.valid||={from:p.now2string()},e.valid.from||=p.now2string(),n({wizardText:this.state.wizardText,wizard:JSON.stringify(e)})}),onClose:()=>this.setState({openDialog:!1}),children:u(p,{theme:this.props.theme,schedule:t,onChange:(e,t)=>this.setState({wizardText:t||``,wizard:e})})}):null]},`wizard`)}onTagChange(e){switch(e||=this.state.settings.tagCard,e){case`interval`:this._setInterval();break;case`cron`:this.setState({inputs:[{nameRender:`renderCron`,attr:`cron`,defaultValue:`0 * * * *`}]},()=>super.onTagChange());break;case`wizard`:{let e=JSON.parse(le);e.valid||={from:p.now2string()},e.valid.from||=p.now2string(),this.setState({inputs:[{nameRender:`renderWizard`,attr:`wizard`,defaultValue:JSON.stringify(e)}]},()=>super.onTagChange(null,()=>{let t=p.state2text(this.state.settings.wizard||e);if(this.state.settings.wizard!==t){let e=JSON.parse(JSON.stringify(this.state.settings));e.wizardText=t,this.setState({settings:e}),this.props.onChange(e)}}));break}case`at`:this.setState({inputs:[{nameRender:`renderTime`,prefix:`at`,attr:`at`,defaultValue:`07:30`},{nameRender:`renderSelect`,attr:`dow`,default:``,multiple:!0,defaultValue:[`_`,`1`,`2`,`3`,`4`,`5`,`6`,`0`],options:[{value:`_`,title:`Every day`,only:!0},{value:`1`,title:`Monday`,titleShort:`Mo`},{value:`2`,title:`Tuesday`,titleShort:`Tu`},{value:`3`,title:`Wednesday`,titleShort:`We`},{value:`4`,title:`Thursday`,titleShort:`Th`},{value:`5`,title:`Friday`,titleShort:`Fr`},{value:`6`,title:`Saturday`,titleShort:`Sa`},{value:`0`,title:`Sunday`,titleShort:`Su`}]}]},()=>super.onTagChange());break;case`astro`:this._setAstro()}}getSummary(){let{tagCard:e,interval:t,unit:n,cron:r,at:i,astro:a,offset:o,offsetValue:s}=this.state.settings,c=e?_.t(e):void 0;switch(e){case`interval`:return t?{kicker:c,title:`${_.t(`every`)} ${t} ${_.t(n||`s`)}`}:null;case`at`:return i?{kicker:c,title:i}:null;case`astro`:{if(!a)return null;let e=o&&s?` ${s>0?`+`:``}${s} ${_.t(`min`)}`:``;return{kicker:c,title:`${_.t(a)}${e}`}}case`cron`:case`wizard`:return r?{kicker:c,title:String(r)}:null;default:return null}}static getStaticData(){return{acceptedBy:`triggers`,name:`Schedule`,id:`TriggerScheduleBlock`,icon:`AccessTime`,tagCardArray:[`cron`,`wizard`,`interval`,`at`,`astro`],title:`Triggers the rule periodically or on some specific time`}}getData(){return e.getStaticData()}};r();var H={valueAck:{color:`#b02323`},valueNotAck:{color:`#12ac15`}},U=f.forwardRef((e,t)=>u(a,{direction:`up`,ref:t,...e}));U.displayName=`Transition`;var de=class e extends A{constructor(t){super(t,e.getStaticData()),y(this,`inputRef`,void 0),this.inputRef=f.createRef()}static compile(e,t){let n=t.justCheck?I:D;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {val: obj.state.val, ack: obj.state.ack, valOld: obj.oldState && obj.oldState.val, ackOld: obj.oldState && obj.oldState.ack})`),`on({id: "${e.oid||``}", change: "${e.tagCard===`on update`?`any`:`ne`}"}, ${n});`}renderDebug(e){return e.data.valOld===void 0?g(`span`,{children:[_.t(`Triggered`),` `,u(`span`,{style:e.data.ack?H.valueAck:H.valueNotAck,children:k(e.data.val)})]}):g(`span`,{children:[_.t(`Triggered`),` `,u(`span`,{style:e.data.ackOld?H.valueAck:H.valueNotAck,children:k(e.data.valOld)}),` `,`→`,` `,u(`span`,{style:e.data.ack?H.valueAck:H.valueNotAck,children:k(e.data.val)})]})}onWriteValue(){this.setState({openSimulate:!1});let e=this.state.simulateValue;window.localStorage.setItem(`javascript.app.${this.state.settings.oid}_ack`,this.state.simulateAck?`true`:`false`),this.state.settings.oidType===`boolean`?(e=e===!0||e===`true`||e===`1`,window.localStorage.setItem(`javascript.app.${this.state.settings.oid}`,e?`true`:`false`)):this.state.settings.oidType===`number`?(e=parseFloat(e)||0,window.localStorage.setItem(`javascript.app.${this.state.settings.oid}`,e.toString())):window.localStorage.setItem(`javascript.app.${this.state.settings.oid}`,(e==null?void 0:e.toString())||``),this.props.socket.setState(this.state.settings.oid,{val:e,ack:!!this.state.simulateAck})}renderWriteState(){return[u(s,{disabled:!this.state.settings.oid||!this.state.enableSimulation,variant:`contained`,color:`primary`,onClick:()=>{this.setState({openSimulate:!0,simulateValue:this.state.settings.oidType===`boolean`?window.localStorage.getItem(`javascript.app.${this.state.settings.oid}`)===`true`:window.localStorage.getItem(`javascript.app.${this.state.settings.oid}`)||``,simulateAck:window.localStorage.getItem(`javascript.app.${this.state.settings.oid}_ack`)===`true`}),setTimeout(()=>{var e;return(e=this.inputRef.current)==null?void 0:e.focus()},200)},children:_.t(`Simulate`)},`buttonWrite`),g(b,{open:!!this.state.openSimulate,slots:{transition:U},keepMounted:!0,onClose:()=>this.setState({openSimulate:!1}),"aria-labelledby":`simulate-dialog-slide-title`,"aria-describedby":`simulate-dialog-slide-description`,children:[u(d,{id:`simulate-dialog-slide-title`,children:_.t(`Trigger with value`)}),g(h,{children:[this.state.settings.oidType===`boolean`?u(c,{control:u(i,{slotProps:{input:{ref:this.inputRef}},onKeyUp:e=>e.key===`Enter`&&this.onWriteValue(),value:!!this.state.simulateValue,onChange:e=>this.setState({simulateValue:e.target.checked})}),label:_.t(`Value`)}):u(o,{variant:`standard`,inputRef:this.inputRef,label:_.t(`Value`),fullWidth:!0,onKeyUp:e=>e.key===`Enter`&&this.onWriteValue(),value:!this.state.simulateValue&&this.state.simulateValue!==0?``:this.state.simulateValue,onChange:e=>this.setState({simulateValue:e.target.value})}),u(`br`,{}),u(c,{control:u(v,{checked:!!this.state.simulateAck,onChange:e=>this.setState({simulateAck:e.target.checked}),color:`primary`}),label:_.t(`Ack`)})]}),g(l,{children:[g(s,{variant:`contained`,onClick:()=>this.onWriteValue(),color:`primary`,children:[u(m,{}),_.t(`Write`)]}),g(s,{color:`grey`,variant:`contained`,onClick:()=>this.setState({openSimulate:!1}),children:[u(n,{}),_.t(`Close`)]})]})]},`dialogWrite`)]}getSummary(){let{oid:e,tagCard:t}=this.state.settings;if(!e)return null;let n=this.objectName(e);return{kicker:t?_.t(t):void 0,title:n||e,subtitle:n?e:void 0}}onTagChange(e){this.setState({inputs:[{nameRender:`renderObjectID`,attr:`oid`,defaultValue:``},{nameRender:`renderWriteState`}]},()=>{super.onTagChange()})}static getStaticData(){return{acceptedBy:`triggers`,name:`State`,id:`TriggerState`,icon:`FlashOn`,tagCardArray:[`on change`,`on update`],title:`Triggers the rule on update or change of some state`}}getData(){return e.getStaticData()}},fe=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=t.justCheck?P:ee;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {message: typeof data === "object" ? JSON.stringify(data) : data})`),`onMessage(${JSON.stringify(e.message||`message`)}, ${n});`}renderDebug(e){return`${_.t(`Received:`)} ${e.data.message}`}getSummary(){let{message:e}=this.state.settings;return e?{kicker:_.t(`On message`),title:String(e)}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderText`,attr:`message`,frontText:`Message name:`,defaultValue:`myMessage`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On message`,id:`TriggerMessage`,icon:`Message`,title:`Triggers the rule when another script or adapter sends a message`,helpDialog:`Send the message from a script with messageTo({instance: 'javascript.0'}, 'myMessage', data). The sent data is available in the texts of the actions as %s.`}}getData(){return e.getStaticData()}},pe=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){if(!e.fileId)return`// no object for the file subscription defined
29
- _sendToFrontEnd(${e._id}, {fileName: 'No object defined'});`;let n=t.justCheck?N:F;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {fileName: fileName, size: size})`),`onFile(${JSON.stringify(e.fileId)}, ${JSON.stringify(e.filePattern||`*`)}, false, ${n});`}renderDebug(e){let t=e.data.size===null?`Deleted:`:`File changed:`;return`${_.t(t)} ${e.data.fileName}`}getSummary(){let{fileId:e,filePattern:t}=this.state.settings;return e?{kicker:_.t(`File`),title:`${e}/${t||`*`}`}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderText`,attr:`fileId`,frontText:`Files of:`,defaultValue:`vis.0`},{nameRender:`renderText`,attr:`filePattern`,frontText:`File name:`,defaultValue:`main/*`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On file change`,id:`TriggerFile`,icon:`InsertDriveFile`,title:`Triggers the rule when a file of an object is written or deleted`,helpDialog:`Both fields may contain *, e.g. the object "vis.0" and the file name "main/*". In the texts of the actions %s is the name of the changed file and %id the object it belongs to. Requires js-controller 4.1 or newer.`}}getData(){return e.getStaticData()}},W=[{value:`_`,title:`any change`},{value:`exists`,title:`created or changed`},{value:`deleted`,title:`deleted`}],me=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){if(!e.pattern)return`// no object pattern defined
28
+ _sendToFrontEnd(${e._id}, {text: 'No text defined'});`}renderDebug(e){return`Sent: ${e.data.text}`}getSummary(){let{text:e,title:t,instance:n,priority:r}=this.state.settings;if(!e)return null;let i=[n,this.optionTitle(`priority`,r)].filter(Boolean);return{kicker:t?String(t):void 0,title:String(e),subtitle:i.join(` · `)}}onTagChange(){this.setState({inputs:[{nameRender:`renderInstance`,adapter:`pushsafer`,frontText:`Instance:`,defaultValue:`pushsafer.0`,attr:`instance`},{nameRender:`renderModalInput`,attr:`text`,defaultValue:`Hello`,nameBlock:``,frontText:`Text:`},{nameRender:`renderText`,attr:`title`,defaultValue:`ioBroker`,frontText:`Title:`},{nameRender:`renderSelect`,attr:`sound`,defaultValue:`magic`,frontText:`Sound:`,doNotTranslate:!0,options:[{value:`_`,title:`Device Default`},{value:`0`,title:`Silent`},{value:`1`,title:`Ahem (IM)`},{value:`2`,title:`Applause (Mail)`},{value:`3`,title:`Arrow (Reminder)`},{value:`4`,title:`Baby (SMS)`},{value:`5`,title:`Bell (Alarm)`},{value:`6`,title:`Bicycle (Alarm2)`},{value:`7`,title:`Boing (Alarm3)`},{value:`8`,title:`Buzzer (Alarm4)`},{value:`9`,title:`Camera (Alarm5)`},{value:`10`,title:`Car Horn (Alarm6)`},{value:`11`,title:`Cash Register (Alarm7)`},{value:`12`,title:`Chime (Alarm8)`},{value:`13`,title:`Creaky Door (Alarm9)`},{value:`14`,title:`Cuckoo Clock (Alarm10)`},{value:`15`,title:`Disconnect (Call)`},{value:`16`,title:`Dog (Call2)`},{value:`17`,title:`Doorbell (Call3)`},{value:`18`,title:`Fanfare (Call4)`},{value:`19`,title:`Gun Shot (Call5)`},{value:`20`,title:`Honk (Call6)`},{value:`21`,title:`Jaw Harp (Call7)`},{value:`22`,title:`Morse (Call8)`},{value:`23`,title:`Electricity (Call9)`},{value:`24`,title:`Radio Tuner (Call10)`},{value:`25`,title:`Sirens`},{value:`26`,title:`Military Trumpets`},{value:`27`,title:`Ufo`},{value:`28`,title:`Whah Whah Whah`},{value:`29`,title:`Man Saying Goodbye`},{value:`30`,title:`Man Saying Hello`},{value:`31`,title:`Man Saying No`},{value:`32`,title:`Man Saying Ok`},{value:`33`,title:`Man Saying Ooohhhweee`},{value:`34`,title:`Man Saying Warning`},{value:`35`,title:`Man Saying Welcome`},{value:`36`,title:`Man Saying Yeah`},{value:`37`,title:`Man Saying Yes`},{value:`38`,title:`Beep short`},{value:`39`,title:`Weeeee short`},{value:`40`,title:`Cut in and out short`},{value:`41`,title:`Finger flicking glas short`},{value:`42`,title:`Wa Wa Waaaa short`},{value:`43`,title:`Laser short`},{value:`44`,title:`Wind Chime short`},{value:`45`,title:`Echo short`},{value:`46`,title:`Zipper short`},{value:`47`,title:`HiHat short`},{value:`48`,title:`Beep 2 short`},{value:`49`,title:`Beep 3 short`},{value:`50`,title:`Beep 4 short`},{value:`51`,title:`The Alarm is armed`},{value:`52`,title:`The Alarm is disarmed`},{value:`53`,title:`The Backup is ready`},{value:`54`,title:`The Door is closed`},{value:`55`,title:`The Door is opend`},{value:`56`,title:`The Window is closed`},{value:`57`,title:`The Window is open`},{value:`58`,title:`The Light is off`},{value:`59`,title:`The Light is on`},{value:`60`,title:`The Doorbell rings`},{value:`61`,title:`Pager short`},{value:`62`,title:`Pager long`}]},{nameRender:`renderSelect`,attr:`priority`,defaultValue:0,frontText:`Priority:`,options:[{value:-2,title:`lowest priority`},{value:-1,title:`lower priority`},{value:0,title:`normal priority`},{value:1,title:`high priority`},{value:2,title:`highest priority`}]},{nameRender:`renderSelect`,attr:`vibration`,defaultValue:0,frontText:`Vibration:`,options:[{value:`_`,title:`default`},{value:1,title:`1`},{value:2,title:`2`},{value:3,title:`3`}]}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`actions`,name:`Pushsafer`,id:`ActionPushsafer`,adapter:`pushsafer`,title:`Sends message via Pushsafer`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},se=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return te.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {trigger: true})`)}renderDebug(){return h.t(`Triggered`)}getSummary(){return{title:h.t(`On script save or adapter start`)}}onTagChange(e){this.setState({inputs:[{nameRender:`renderNameText`,defaultValue:`On script save or adapter start`,attr:`script`}]},()=>super.onTagChange())}static getStaticData(){return{acceptedBy:`triggers`,name:`Start script`,id:`TriggerScriptSave`,icon:`PlayArrow`,title:`Triggers the on script saving or the javascript instance restart`}}getData(){return e.getStaticData()}},ce=t(((e,t)=>{(function(){var n=Math.PI,r=Math.sin,i=Math.cos,a=Math.tan,o=Math.asin,s=Math.atan2,c=Math.acos,l=n/180,u=864e5,d=2440588,f=2451545;function p(e){return e.valueOf()/u-.5+d}function m(e){return new Date((e+.5-d)*u)}function h(e){return p(e)-f}var g=l*23.4397;function _(e,t){return s(r(e)*i(g)-a(t)*r(g),i(e))}function v(e,t){return o(r(t)*i(g)+i(t)*r(g)*r(e))}function y(e,t,n){return s(r(e),i(e)*r(t)-a(n)*i(t))}function b(e,t,n){return o(r(t)*r(n)+i(t)*i(n)*i(e))}function x(e,t){return l*(280.16+360.9856235*e)-t}function S(e){return e<0&&(e=0),2967e-7/Math.tan(e+.00312536/(e+.08901179))}function C(e){return l*(357.5291+.98560028*e)}function w(e){var t=l*(1.9148*r(e)+.02*r(2*e)+3e-4*r(3*e)),i=l*102.9372;return e+t+i+n}function T(e){var t=w(C(e));return{dec:v(t,0),ra:_(t,0)}}var E={};E.getPosition=function(e,t,n){var r=l*-n,i=l*t,a=h(e),o=T(a),s=x(a,r)-o.ra;return{azimuth:y(s,i,o.dec),altitude:b(s,i,o.dec)}};var D=E.times=[[-.833,`sunrise`,`sunset`],[-.3,`sunriseEnd`,`sunsetStart`],[-6,`dawn`,`dusk`],[-12,`nauticalDawn`,`nauticalDusk`],[-18,`nightEnd`,`night`],[6,`goldenHourEnd`,`goldenHour`]];E.addTime=function(e,t,n){D.push([e,t,n])};var O=9e-4;function k(e,t){return Math.round(e-O-t/(2*n))}function A(e,t,r){return O+(e+t)/(2*n)+r}function j(e,t,n){return f+e+.0053*r(t)-.0069*r(2*n)}function M(e,t,n){return c((r(e)-r(t)*r(n))/(i(t)*i(n)))}function N(e,t,n,r,i,a,o){return j(A(M(e,n,r),t,i),a,o)}E.getTimes=function(e,t,n){var r=l*-n,i=l*t,a=k(h(e),r),o=A(0,r,a),s=C(o),c=w(s),u=v(c,0),d=j(o,s,c),f,p,g,_,y,b={solarNoon:m(d),nadir:m(d+.5)};for(f=0,p=D.length;f<p;f+=1)g=D[f],_=N(g[0]*l,r,i,u,a,s,c),y=d-(_-d),b[g[1]]=m(y),b[g[2]]=m(_);return b};function P(e){var t=l*(218.316+13.176396*e),n=l*(134.963+13.064993*e),a=l*(93.272+13.22935*e),o=t+l*6.289*r(n),s=l*5.128*r(a),c=385001-20905*i(n);return{ra:_(o,s),dec:v(o,s),dist:c}}E.getMoonPosition=function(e,t,n){var o=l*-n,c=l*t,u=h(e),d=P(u),f=x(u,o)-d.ra,p=b(f,c,d.dec),m=s(r(f),a(c)*i(d.dec)-r(d.dec)*i(f));return p+=S(p),{azimuth:y(f,c,d.dec),altitude:p,distance:d.dist,parallacticAngle:m}},E.getMoonIllumination=function(e){var t=h(e||new Date),n=T(t),a=P(t),o=149598e3,l=c(r(n.dec)*r(a.dec)+i(n.dec)*i(a.dec)*i(n.ra-a.ra)),u=s(o*r(l),a.dist-o*i(l)),d=s(i(n.dec)*r(n.ra-a.ra),r(n.dec)*i(a.dec)-i(n.dec)*r(a.dec)*i(n.ra-a.ra));return{fraction:(1+i(u))/2,phase:.5+.5*u*(d<0?-1:1)/Math.PI,angle:d}};function F(e,t){return new Date(e.valueOf()+t*u/24)}E.getMoonTimes=function(e,t,n,r){var i=new Date(e);r?i.setUTCHours(0,0,0,0):i.setHours(0,0,0,0);for(var a=.133*l,o=E.getMoonPosition(i,t,n).altitude-a,s,c,u,d,f,p,m,h,g,_,v,y,b,x=1;x<=24&&(s=E.getMoonPosition(F(i,x),t,n).altitude-a,c=E.getMoonPosition(F(i,x+1),t,n).altitude-a,f=(o+c)/2-s,p=(c-o)/2,m=-p/(2*f),h=(f*m+p)*m+s,g=p*p-4*f*s,_=0,g>=0&&(b=Math.sqrt(g)/(Math.abs(f)*2),v=m-b,y=m+b,Math.abs(v)<=1&&_++,Math.abs(y)<=1&&_++,v<-1&&(v=y)),_===1?o<0?u=x+v:d=x+v:_===2&&(u=x+(h<0?y:v),d=x+(h<0?v:y)),!(u&&d));x+=2)o=c;var S={};return u&&(S.rise=F(i,u)),d&&(S.set=F(i,d)),!u&&!d&&(S[h>0?`alwaysUp`:`alwaysDown`]=!0),S},typeof e==`object`&&t!==void 0?t.exports=E:window.SunCalc=E})()}));o();var V=e(ce(),1),le=`{"time":{"start":"00:00","end":"24:00","mode":"hours","interval":1},"period":{"days":1}}`,ue=class e extends A{constructor(t){super(t,e.getStaticData()),v(this,`coordinates`,null)}static compile(e,t){let n=``,r=t.justCheck?I:D;if(r=r.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {trigger: true})`),e.tagCard===`interval`)n=`setInterval(${r}, ${e.interval||1} * ${e.unit===`s`?1e3:e.unit===`m`?6e4:36e5});`;else if(e.tagCard===`cron`)n=`schedule("${e.cron}", ${r});`;else if(e.tagCard===`at`){var i;let[t,a]=(e.at||``).split(`:`),o=`*`;if(e!=null&&(i=e.dow)!=null&&i.length&&!e.dow.includes(`_`)){let t=[...e.dow].map(e=>parseInt(e,10));t.sort();let n=[],r=t[0],i=1;for(;i<t.length;i++)t[i]-t[i-1]>1?(r===t[i-1]?n.push(r.toString()):t[i-1]-r===1?n.push(`${r},${t[i-1]}`):n.push(`${r}-${t[i-1]}`),r=t[i]):i===t.length-1&&(r===t[i-1]||t[i]-r===1?n.push(`${r},${t[i]}`):n.push(`${r}-${t[i]}`));o=n.join(`,`)}n=`schedule("${a||`0`} ${t||`0`} * * ${o}", ${r});`}else e.tagCard===`astro`?n=`schedule({astro: "${e.astro}", shift: ${e.offset?e.offsetValue:0}}, ${r});`:e.tagCard===`wizard`&&(n=`schedule('${e.wizard}', ${r});`);return n}static _time2String(e){return e?`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}`:`--:--`}async _setAstro(t,n,r){if(t||=this.state.settings.astro||`solarNoon`,n??=this.state.settings.offset,r??=this.state.settings.offsetValue,r=parseInt(r,10)||0,!this.coordinates){var i,a;let e=await this.props.socket.getObject(`system.adapter.javascript.0`),t=e==null||(i=e.native)==null?void 0:i.latitude,n=e==null||(a=e.native)==null?void 0:a.longitude;if(!t&&!n){let e=await this.props.socket.getObject(`system.config`);this.coordinates=e!=null&&e.common&&(e.common.latitude||e.common.longitude)?{latitude:parseFloat(e.common.latitude),longitude:parseFloat(e.common.longitude)}:null}else this.coordinates={latitude:parseFloat(t),longitude:parseFloat(n)}}let o=this.coordinates&&V.default.getTimes(new Date,this.coordinates.latitude,this.coordinates.longitude),s=o?Object.keys(o).map(t=>({value:t,title:t,title2:`[${e._time2String(o[t])}]`,order:o?e._time2String(o[t]):`??:??`})):[];s.sort((e,t)=>e.order>t.order?1:e.order<t.order?-1:0);let c=`--:--`;if(t&&o&&o[t]){let i=new Date(o[t]);n&&i.setMinutes(i.getMinutes()+parseInt(r,10)),c=h.t(`(at %s)`,e._time2String(i))}let l;l=n?[{frontText:`at`,attr:`astro`,nameRender:`renderSelect`,options:s,defaultValue:`solarNoon`,doNotTranslate2:!0},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{backText:r===1?`minute`:`minutes`,frontText:`offset`,nameRender:`renderNumber`,defaultValue:0,attr:`offsetValue`,noHelperText:!0},{nameRender:`renderNameText`,attr:`textTime`,defaultValue:c,doNotTranslate:!0}]:[{frontText:`at`,attr:`astro`,nameRender:`renderSelect`,options:s,doNotTranslate2:!0,defaultValue:`solarNoon`},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{nameRender:`renderNameText`,attr:`textTime1`,defaultValue:c,doNotTranslate:!0}],this.setState({inputs:l},()=>super.onTagChange())}_setInterval(e){e=parseInt(e||this.state.settings.interval,10)||30;let t;t=e===1?[{value:`s`,title:`second`},{value:`m`,title:`minute`},{value:`h`,title:`hour`}]:[{value:`s`,title:`seconds`},{value:`m`,title:`minutes`},{value:`h`,title:`hours`}],this.setState({inputs:[{nameRender:`renderNumber`,attr:`interval`,frontText:`every`,defaultValue:30,className:`block-input-interval`},{nameRender:`renderSelect`,attr:`unit`,defaultValue:`s`,options:t}]},()=>super.onTagChange())}renderDebug(e){return h.t(`Triggered`)}onValueChanged(e,t){this.state.settings.tagCard===`astro`?t===`astro`?this._setAstro(e):t===`offset`?this._setAstro(void 0,e):t===`offsetValue`&&this._setAstro(void 0,void 0,e):this.state.settings.tagCard===`interval`&&t===`interval`&&this._setInterval(e)}renderCron(e,t,n){let{className:r}=this.props;return x(`div`,{children:[x(`div`,{style:{display:`flex`,alignItems:`baseline`},children:[m(`div`,{style:{width:`100%`},children:this.renderText({nameRender:`renderText`,attr:`cron`,defaultValue:t},this.state.settings.cron||t,n)}),m(T,{square:!0,style:{marginLeft:7},value:`...`,className:r,onClick:()=>this.setState({openDialog:!0,textCron:this.state.settings.cron})})]}),this.state.openDialog?m(L,{disabled:this.state.settings.cron===this.state.textCron,onApply:()=>{let e=this.state.textCron;n(e,`cron`,()=>{n(C(e,h.getLanguage()),`addText`),this.setState({openDialog:!1})})},onClose:()=>this.setState({openDialog:!1,textCron:``}),children:m(y,{cronExpression:this.state.settings.cron,onChange:e=>this.setState({textCron:e}),language:h.getLanguage()})}):null,this.renderNameText({nameRender:`renderNameText`,defaultValue:h.t(`every hour at 0 minutes`),attr:`addText`,signature:!0,doNotTranslate:!0},this.state.settings.addText||h.t(`every hour at 0 minutes`))]},`cron`)}renderWizard(e,t,n){let{className:r}=this.props;return x(`div`,{children:[x(`div`,{style:{display:`flex`,alignItems:`center`,marginTop:7},children:[m(R,{className:r,autoComplete:`off`,fullWidth:!0,variant:`outlined`,size:`small`,multiline:!0,rows:2,value:this.state.settings.wizardText,onChange:e=>n(e),customValue:!0}),m(T,{square:!0,style:{marginLeft:7},value:`...`,className:r,onClick:()=>this.setState({openDialog:!0,wizard:this.state.settings.wizard,wizardText:d.state2text(this.state.settings.wizard)})})]}),this.state.openDialog?m(L,{disabled:this.state.settings.wizard===this.state.wizard,onApply:()=>this.setState({openDialog:!1},()=>{let e=JSON.parse(this.state.wizard);e.valid||={from:d.now2string()},e.valid.from||=d.now2string(),n({wizardText:this.state.wizardText,wizard:JSON.stringify(e)})}),onClose:()=>this.setState({openDialog:!1}),children:m(d,{theme:this.props.theme,schedule:t,onChange:(e,t)=>this.setState({wizardText:t||``,wizard:e})})}):null]},`wizard`)}onTagChange(e){switch(e||=this.state.settings.tagCard,e){case`interval`:this._setInterval();break;case`cron`:this.setState({inputs:[{nameRender:`renderCron`,attr:`cron`,defaultValue:`0 * * * *`}]},()=>super.onTagChange());break;case`wizard`:{let e=JSON.parse(le);e.valid||={from:d.now2string()},e.valid.from||=d.now2string(),this.setState({inputs:[{nameRender:`renderWizard`,attr:`wizard`,defaultValue:JSON.stringify(e)}]},()=>super.onTagChange(null,()=>{let t=d.state2text(this.state.settings.wizard||e);if(this.state.settings.wizard!==t){let e=JSON.parse(JSON.stringify(this.state.settings));e.wizardText=t,this.setState({settings:e}),this.props.onChange(e)}}));break}case`at`:this.setState({inputs:[{nameRender:`renderTime`,prefix:`at`,attr:`at`,defaultValue:`07:30`},{nameRender:`renderSelect`,attr:`dow`,default:``,multiple:!0,defaultValue:[`_`,`1`,`2`,`3`,`4`,`5`,`6`,`0`],options:[{value:`_`,title:`Every day`,only:!0},{value:`1`,title:`Monday`,titleShort:`Mo`},{value:`2`,title:`Tuesday`,titleShort:`Tu`},{value:`3`,title:`Wednesday`,titleShort:`We`},{value:`4`,title:`Thursday`,titleShort:`Th`},{value:`5`,title:`Friday`,titleShort:`Fr`},{value:`6`,title:`Saturday`,titleShort:`Sa`},{value:`0`,title:`Sunday`,titleShort:`Su`}]}]},()=>super.onTagChange());break;case`astro`:this._setAstro()}}getSummary(){let{tagCard:e,interval:t,unit:n,cron:r,at:i,astro:a,offset:o,offsetValue:s}=this.state.settings,c=e?h.t(e):void 0;switch(e){case`interval`:return t?{kicker:c,title:`${h.t(`every`)} ${t} ${h.t(n||`s`)}`}:null;case`at`:return i?{kicker:c,title:i}:null;case`astro`:{if(!a)return null;let e=o&&s?` ${s>0?`+`:``}${s} ${h.t(`min`)}`:``;return{kicker:c,title:`${h.t(a)}${e}`}}case`cron`:case`wizard`:return r?{kicker:c,title:String(r)}:null;default:return null}}static getStaticData(){return{acceptedBy:`triggers`,name:`Schedule`,id:`TriggerScheduleBlock`,icon:`AccessTime`,tagCardArray:[`cron`,`wizard`,`interval`,`at`,`astro`],title:`Triggers the rule periodically or on some specific time`}}getData(){return e.getStaticData()}};o();var H={valueAck:{color:`#b02323`},valueNotAck:{color:`#12ac15`}},U=g.forwardRef((e,t)=>m(a,{direction:`up`,ref:t,...e}));U.displayName=`Transition`;var de=class e extends A{constructor(t){super(t,e.getStaticData()),v(this,`inputRef`,void 0),this.inputRef=g.createRef()}static compile(e,t){let n=t.justCheck?I:D;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {val: obj.state.val, ack: obj.state.ack, valOld: obj.oldState && obj.oldState.val, ackOld: obj.oldState && obj.oldState.ack})`),`on({id: "${e.oid||``}", change: "${e.tagCard===`on update`?`any`:`ne`}"}, ${n});`}renderDebug(e){return e.data.valOld===void 0?x(`span`,{children:[h.t(`Triggered`),` `,m(`span`,{style:e.data.ack?H.valueAck:H.valueNotAck,children:k(e.data.val)})]}):x(`span`,{children:[h.t(`Triggered`),` `,m(`span`,{style:e.data.ackOld?H.valueAck:H.valueNotAck,children:k(e.data.valOld)}),` `,`→`,` `,m(`span`,{style:e.data.ack?H.valueAck:H.valueNotAck,children:k(e.data.val)})]})}onWriteValue(){this.setState({openSimulate:!1});let e=this.state.simulateValue;window.localStorage.setItem(`javascript.app.${this.state.settings.oid}_ack`,this.state.simulateAck?`true`:`false`),this.state.settings.oidType===`boolean`?(e=e===!0||e===`true`||e===`1`,window.localStorage.setItem(`javascript.app.${this.state.settings.oid}`,e?`true`:`false`)):this.state.settings.oidType===`number`?(e=parseFloat(e)||0,window.localStorage.setItem(`javascript.app.${this.state.settings.oid}`,e.toString())):window.localStorage.setItem(`javascript.app.${this.state.settings.oid}`,(e==null?void 0:e.toString())||``),this.props.socket.setState(this.state.settings.oid,{val:e,ack:!!this.state.simulateAck})}renderWriteState(){return[m(s,{disabled:!this.state.settings.oid||!this.state.enableSimulation,variant:`contained`,color:`primary`,onClick:()=>{this.setState({openSimulate:!0,simulateValue:this.state.settings.oidType===`boolean`?window.localStorage.getItem(`javascript.app.${this.state.settings.oid}`)===`true`:window.localStorage.getItem(`javascript.app.${this.state.settings.oid}`)||``,simulateAck:window.localStorage.getItem(`javascript.app.${this.state.settings.oid}_ack`)===`true`}),setTimeout(()=>{var e;return(e=this.inputRef.current)==null?void 0:e.focus()},200)},children:h.t(`Simulate`)},`buttonWrite`),x(c,{open:!!this.state.openSimulate,slots:{transition:U},keepMounted:!0,onClose:()=>this.setState({openSimulate:!1}),"aria-labelledby":`simulate-dialog-slide-title`,"aria-describedby":`simulate-dialog-slide-description`,children:[m(u,{id:`simulate-dialog-slide-title`,children:h.t(`Trigger with value`)}),x(b,{children:[this.state.settings.oidType===`boolean`?m(S,{control:m(r,{slotProps:{input:{ref:this.inputRef}},onKeyUp:e=>e.key===`Enter`&&this.onWriteValue(),value:!!this.state.simulateValue,onChange:e=>this.setState({simulateValue:e.target.checked})}),label:h.t(`Value`)}):m(i,{variant:`standard`,inputRef:this.inputRef,label:h.t(`Value`),fullWidth:!0,onKeyUp:e=>e.key===`Enter`&&this.onWriteValue(),value:!this.state.simulateValue&&this.state.simulateValue!==0?``:this.state.simulateValue,onChange:e=>this.setState({simulateValue:e.target.value})}),m(`br`,{}),m(S,{control:m(_,{checked:!!this.state.simulateAck,onChange:e=>this.setState({simulateAck:e.target.checked}),color:`primary`}),label:h.t(`Ack`)})]}),x(p,{children:[x(s,{variant:`contained`,onClick:()=>this.onWriteValue(),color:`primary`,children:[m(f,{}),h.t(`Write`)]}),x(s,{color:`grey`,variant:`contained`,onClick:()=>this.setState({openSimulate:!1}),children:[m(n,{}),h.t(`Close`)]})]})]},`dialogWrite`)]}getSummary(){let{oid:e,tagCard:t}=this.state.settings;if(!e)return null;let n=this.objectName(e);return{kicker:t?h.t(t):void 0,title:n||e,subtitle:n?e:void 0}}onTagChange(e){this.setState({inputs:[{nameRender:`renderObjectID`,attr:`oid`,defaultValue:``},{nameRender:`renderWriteState`}]},()=>{super.onTagChange()})}static getStaticData(){return{acceptedBy:`triggers`,name:`State`,id:`TriggerState`,icon:`FlashOn`,tagCardArray:[`on change`,`on update`],title:`Triggers the rule on update or change of some state`}}getData(){return e.getStaticData()}},fe=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=t.justCheck?P:ee;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {message: typeof data === "object" ? JSON.stringify(data) : data})`),`onMessage(${JSON.stringify(e.message||`message`)}, ${n});`}renderDebug(e){return`${h.t(`Received:`)} ${e.data.message}`}getSummary(){let{message:e}=this.state.settings;return e?{kicker:h.t(`On message`),title:String(e)}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderText`,attr:`message`,frontText:`Message name:`,defaultValue:`myMessage`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On message`,id:`TriggerMessage`,icon:`Message`,title:`Triggers the rule when another script or adapter sends a message`,helpDialog:`Send the message from a script with messageTo({instance: 'javascript.0'}, 'myMessage', data). The sent data is available in the texts of the actions as %s.`}}getData(){return e.getStaticData()}},pe=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){if(!e.fileId)return`// no object for the file subscription defined
29
+ _sendToFrontEnd(${e._id}, {fileName: 'No object defined'});`;let n=t.justCheck?N:F;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {fileName: fileName, size: size})`),`onFile(${JSON.stringify(e.fileId)}, ${JSON.stringify(e.filePattern||`*`)}, false, ${n});`}renderDebug(e){let t=e.data.size===null?`Deleted:`:`File changed:`;return`${h.t(t)} ${e.data.fileName}`}getSummary(){let{fileId:e,filePattern:t}=this.state.settings;return e?{kicker:h.t(`File`),title:`${e}/${t||`*`}`}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderText`,attr:`fileId`,frontText:`Files of:`,defaultValue:`vis.0`},{nameRender:`renderText`,attr:`filePattern`,frontText:`File name:`,defaultValue:`main/*`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On file change`,id:`TriggerFile`,icon:`InsertDriveFile`,title:`Triggers the rule when a file of an object is written or deleted`,helpDialog:`Both fields may contain *, e.g. the object "vis.0" and the file name "main/*". In the texts of the actions %s is the name of the changed file and %id the object it belongs to. Requires js-controller 4.1 or newer.`}}getData(){return e.getStaticData()}},W=[{value:`_`,title:`any change`},{value:`exists`,title:`created or changed`},{value:`deleted`,title:`deleted`}],me=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){if(!e.pattern)return`// no object pattern defined
30
30
  _sendToFrontEnd(${e._id}, {id: 'No pattern defined'});`;let n=t.justCheck?E:M,r=e.change===`deleted`?`
31
31
  if (obj) { return; }`:e.change===`exists`?`
32
- if (!obj) { return; }`:``;return n=n.replace(`"__%%DEBUG_TRIGGER%%__";`,`_sendToFrontEnd(${e._id}, {id: id, deleted: !obj});${r}`),`onObject(${JSON.stringify(e.pattern)}, ${n});`}renderDebug(e){return`${_.t(e.data.deleted?`Object deleted:`:`Object changed:`)} ${e.data.id}`}getSummary(){let{pattern:e,change:t}=this.state.settings;if(!e)return null;let n=W.find(e=>e.value===(t||`_`));return{kicker:n?_.t(n.title):void 0,title:e}}onTagChange(e){this.setState({inputs:[{nameRender:`renderText`,attr:`pattern`,frontText:`Object ID:`,defaultValue:`javascript.0.*`},{nameRender:`renderSelect`,attr:`change`,frontText:`React on:`,options:W,defaultValue:`_`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On object change`,id:`TriggerObject`,icon:`AccountTree`,title:`Triggers the rule when an object is created, changed or deleted`,helpDialog:`This reacts to the object itself, not to its value - use the "State" trigger for values. The pattern may contain *, e.g. "hm-rpc.0.*". In the texts of the actions %s and %id are the id of the changed object.`}}getData(){return e.getStaticData()}},G=[{value:`error`,title:`error`},{value:`warn`,title:`warn`},{value:`info`,title:`info`},{value:`debug`,title:`debug`},{value:`silly`,title:`silly`},{value:`*`,title:`any level`}],he=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=t.justCheck?j:w,r=(e.filter||``).trim(),i=r?`\n if (!String(info.message).toLowerCase().includes(${JSON.stringify(r.toLowerCase())})) { return; }`:``;return n=n.replace(`"__%%DEBUG_TRIGGER%%__";`,`_sendToFrontEnd(${e._id}, {message: info.message, severity: info.severity});${i}`),`onLog(${JSON.stringify(e.severity||`error`)}, ${n});`}renderDebug(e){return`${_.t(`Logged:`)} ${e.data.message}`}getSummary(){let{severity:e,filter:t}=this.state.settings,n=G.find(t=>t.value===(e||`error`));return{kicker:n?_.t(n.title):void 0,title:t?`${_.t(`Log contains`)}: ${t}`:_.t(`Every log entry`)}}onTagChange(e){this.setState({inputs:[{nameRender:`renderSelect`,attr:`severity`,frontText:`Level:`,options:G,defaultValue:`error`},{nameRender:`renderText`,attr:`filter`,frontText:`Contains:`,defaultValue:``}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On log message`,id:`TriggerLog`,icon:`Article`,title:`Triggers the rule when something is written to the ioBroker log`,helpDialog:`Leave "Contains" empty to react to every entry of that level. Fill it in if an action of this rule writes to the log itself - a rule that matches its own message can trigger itself. In the texts of the actions %s is the log message and %id the instance it came from.`}}getData(){return e.getStaticData()}},ge=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e){return`onStop(${O.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {trigger: true})`)}, ${parseInt(e.timeout,10)||1e3});`}renderDebug(){return _.t(`Triggered`)}getSummary(){let{timeout:e}=this.state.settings;return{title:_.t(`On rule stop`),subtitle:`${_.t(`Wait at most:`)} ${parseInt(e,10)||1e3} ${_.t(`ms`)}`}}onTagChange(e){this.setState({inputs:[{nameRender:`renderNumber`,attr:`timeout`,frontText:`Wait at most:`,backText:`ms`,doNotTranslateBack:!0,defaultValue:1e3}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On rule stop`,id:`TriggerOnStop`,icon:`Stop`,title:`Runs the rule once more when it is stopped, saved or the adapter shuts down`,helpDialog:`The adapter waits for the actions, but only for the time set here - what does not fit is cut off. A rule can have only one block of this kind; a second one replaces the first.`}}getData(){return e.getStaticData()}};function K(e){return[{nameRender:`renderSelect`,attr:`enumId`,frontText:`Members of:`,doNotTranslate:!0,defaultValue:``,options:e}]}var _e=class e extends A{constructor(t){super(t,e.getStaticData()),y(this,`enumsPromise`,null)}static compile(e,t){if(!e.enumId)return`// no enum defined
33
- _sendToFrontEnd(${e._id}, {id: 'No enum defined'});`;let n=t.justCheck?I:D;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {id: obj.id, val: obj.state && obj.state.val})`),`onEnumMembers(${JSON.stringify(e.enumId)}, ${n});`}renderDebug(e){return`${_.t(`Triggered`)}: ${e.data.id} = ${e.data.val}`}enumTitle(e,t){var n;let r=e==null||(n=e.common)==null?void 0:n.name,i=r&&typeof r==`object`?r[_.getLanguage()]||r.en:r;return i?`${i} (${t})`:t}setInputs(){this.setState({inputs:K([])},()=>super.onTagChange()),this.enumsPromise||=this.props.socket.getObjectViewSystem(`enum`,`enum.`,`enum.香`),this.enumsPromise.then(e=>{if(!this.mounted)return;let t=Object.keys(e||{}).filter(e=>e.split(`.`).length>2).sort().map(t=>({value:t,title:this.enumTitle(e[t],t)}));this.setState({inputs:K(t)},()=>super.onTagChange())})}onTagChange(e){this.setInputs()}getSummary(){let{enumId:e}=this.state.settings;return e?{kicker:_.t(`Any member of`),title:e}:null}static getStaticData(){return{acceptedBy:`triggers`,name:`On enum member change`,id:`TriggerEnumMembers`,icon:`Category`,title:`Triggers the rule when any state of a room or function changes`,helpDialog:`Subscribes to every state of the selected enum and follows it: a device added to that room later is included without changing the rule. In the texts of the actions %s is the new value and %id the state that changed.`}}getData(){return e.getStaticData()}},ve=new URL(`hysteresis-CLhhemcG.png`,import.meta.url).href;r();var q=`function __hysteresis(val, limit, state, hist, comp) {
32
+ if (!obj) { return; }`:``;return n=n.replace(`"__%%DEBUG_TRIGGER%%__";`,`_sendToFrontEnd(${e._id}, {id: id, deleted: !obj});${r}`),`onObject(${JSON.stringify(e.pattern)}, ${n});`}renderDebug(e){return`${h.t(e.data.deleted?`Object deleted:`:`Object changed:`)} ${e.data.id}`}getSummary(){let{pattern:e,change:t}=this.state.settings;if(!e)return null;let n=W.find(e=>e.value===(t||`_`));return{kicker:n?h.t(n.title):void 0,title:e}}onTagChange(e){this.setState({inputs:[{nameRender:`renderText`,attr:`pattern`,frontText:`Object ID:`,defaultValue:`javascript.0.*`},{nameRender:`renderSelect`,attr:`change`,frontText:`React on:`,options:W,defaultValue:`_`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On object change`,id:`TriggerObject`,icon:`AccountTree`,title:`Triggers the rule when an object is created, changed or deleted`,helpDialog:`This reacts to the object itself, not to its value - use the "State" trigger for values. The pattern may contain *, e.g. "hm-rpc.0.*". In the texts of the actions %s and %id are the id of the changed object.`}}getData(){return e.getStaticData()}},G=[{value:`error`,title:`error`},{value:`warn`,title:`warn`},{value:`info`,title:`info`},{value:`debug`,title:`debug`},{value:`silly`,title:`silly`},{value:`*`,title:`any level`}],he=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=t.justCheck?j:w,r=(e.filter||``).trim(),i=r?`\n if (!String(info.message).toLowerCase().includes(${JSON.stringify(r.toLowerCase())})) { return; }`:``;return n=n.replace(`"__%%DEBUG_TRIGGER%%__";`,`_sendToFrontEnd(${e._id}, {message: info.message, severity: info.severity});${i}`),`onLog(${JSON.stringify(e.severity||`error`)}, ${n});`}renderDebug(e){return`${h.t(`Logged:`)} ${e.data.message}`}getSummary(){let{severity:e,filter:t}=this.state.settings,n=G.find(t=>t.value===(e||`error`));return{kicker:n?h.t(n.title):void 0,title:t?`${h.t(`Log contains`)}: ${t}`:h.t(`Every log entry`)}}onTagChange(e){this.setState({inputs:[{nameRender:`renderSelect`,attr:`severity`,frontText:`Level:`,options:G,defaultValue:`error`},{nameRender:`renderText`,attr:`filter`,frontText:`Contains:`,defaultValue:``}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On log message`,id:`TriggerLog`,icon:`Article`,title:`Triggers the rule when something is written to the ioBroker log`,helpDialog:`Leave "Contains" empty to react to every entry of that level. Fill it in if an action of this rule writes to the log itself - a rule that matches its own message can trigger itself. In the texts of the actions %s is the log message and %id the instance it came from.`}}getData(){return e.getStaticData()}},ge=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e){return`onStop(${O.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {trigger: true})`)}, ${parseInt(e.timeout,10)||1e3});`}renderDebug(){return h.t(`Triggered`)}getSummary(){let{timeout:e}=this.state.settings;return{title:h.t(`On rule stop`),subtitle:`${h.t(`Wait at most:`)} ${parseInt(e,10)||1e3} ${h.t(`ms`)}`}}onTagChange(e){this.setState({inputs:[{nameRender:`renderNumber`,attr:`timeout`,frontText:`Wait at most:`,backText:`ms`,doNotTranslateBack:!0,defaultValue:1e3}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`triggers`,name:`On rule stop`,id:`TriggerOnStop`,icon:`Stop`,title:`Runs the rule once more when it is stopped, saved or the adapter shuts down`,helpDialog:`The adapter waits for the actions, but only for the time set here - what does not fit is cut off. A rule can have only one block of this kind; a second one replaces the first.`}}getData(){return e.getStaticData()}};function K(e){return[{nameRender:`renderSelect`,attr:`enumId`,frontText:`Members of:`,doNotTranslate:!0,defaultValue:``,options:e}]}var _e=class e extends A{constructor(t){super(t,e.getStaticData()),v(this,`enumsPromise`,null)}static compile(e,t){if(!e.enumId)return`// no enum defined
33
+ _sendToFrontEnd(${e._id}, {id: 'No enum defined'});`;let n=t.justCheck?I:D;return n=n.replace(`"__%%DEBUG_TRIGGER%%__"`,`_sendToFrontEnd(${e._id}, {id: obj.id, val: obj.state && obj.state.val})`),`onEnumMembers(${JSON.stringify(e.enumId)}, ${n});`}renderDebug(e){return`${h.t(`Triggered`)}: ${e.data.id} = ${e.data.val}`}enumTitle(e,t){var n;let r=e==null||(n=e.common)==null?void 0:n.name,i=r&&typeof r==`object`?r[h.getLanguage()]||r.en:r;return i?`${i} (${t})`:t}setInputs(){this.setState({inputs:K([])},()=>super.onTagChange()),this.enumsPromise||=this.props.socket.getObjectViewSystem(`enum`,`enum.`,`enum.香`),this.enumsPromise.then(e=>{if(!this.mounted)return;let t=Object.keys(e||{}).filter(e=>e.split(`.`).length>2).sort().map(t=>({value:t,title:this.enumTitle(e[t],t)}));this.setState({inputs:K(t)},()=>super.onTagChange())})}onTagChange(e){this.setInputs()}getSummary(){let{enumId:e}=this.state.settings;return e?{kicker:h.t(`Any member of`),title:e}:null}static getStaticData(){return{acceptedBy:`triggers`,name:`On enum member change`,id:`TriggerEnumMembers`,icon:`Category`,title:`Triggers the rule when any state of a room or function changes`,helpDialog:`Subscribes to every state of the selected enum and follows it: a device added to that room later is included without changing the rule. In the texts of the actions %s is the new value and %id the state that changed.`}}getData(){return e.getStaticData()}},ve=new URL(`hysteresis-CLhhemcG.png`,import.meta.url).href;o();var q=`function __hysteresis(val, limit, state, hist, comp) {
34
34
  let cond1, cond2;
35
35
  if (comp === '>') {
36
36
  cond1 = val > limit + hist;
@@ -59,10 +59,10 @@ _sendToFrontEnd(${e._id}, {id: 'No enum defined'});`;let n=t.justCheck?I:D;retur
59
59
  } else {
60
60
  return state;
61
61
  }
62
- }`,ye=class e extends A{constructor(t){super(t,e.getStaticData()),y(this,`onShowHelp`,()=>this.setState({showHysteresisHelp:!0}))}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e,t){let n=e.value,r=n==null;r&&(n=!1);let i=()=>(r?``:String(n)).replace(/"/g,`\\"`),a,o;if(e.tagCard===`()`)t.prelines||=[],t.prelines.find(e=>e!==q)||t.prelines.push(q),e.useTrigger?(a=`obj.state.val`,n===``&&(n=0),o=`__hysteresis(subCondVar${e._id}, ${n}, __%%STATE%%__, ${e.hist}, "${e.histComp}")`):(a=`(await getStateAsync("${e.oid}")).val`,n===``&&(n=0),typeof n==`string`&&parseFloat(n.trim()).toString()!==n.trim()&&(n=`"${n}"`),o=`__hysteresis(subCondVar${e._id}, ${n}, __%%STATE%%__, ${e.hist}, "${e.histComp}")`);else if(e.tagCard!==`includes`){let r=e.tagCard===`=`?`==`:e.tagCard===`<>`?`!=`:e.tagCard;if(e.useTrigger){var s;a=`obj.state.val`,(t==null||(s=t.trigger)==null?void 0:s.oidType)===`string`?(n=i(),o=`subCondVar${e._id} ${r} "${n}"`):(n===``&&(n=0),typeof n==`string`&&parseFloat(n.trim()).toString()!==n.trim()&&(n=`"${n}"`),o=`subCondVar${e._id} ${r} ${n}`)}else a=`(await getStateAsync("${e.oid}")).val`,e.oidType===`string`?(n=i(),o=`subCondVar${e._id} ${r} "${n}"`):(n===``&&(n=0),typeof n==`string`&&parseFloat(n.trim()).toString()!==n.trim()&&(n=`"${n}"`),o=`subCondVar${e._id} ${r} ${n}`)}else if(e.useTrigger){var c;a=`obj.state.val`,(t==null||(c=t.trigger)==null?void 0:c.oidType)===`string`?(n=i(),o=`obj.state.val.includes("${n}")`):o=`false`}else a=`(await getStateAsync("${e.oid}")).val`,e.oidType===`string`?(n=i(),o=`subCondVar${e._id}.includes("${n}")`):o=`false`;return t.conditionsStates.push({name:`subCondVar${e._id}`,id:e.oid}),t.conditionsVars.push(`const subCondVar${e._id} = ${a};`),t.conditionsVars.push(`const subCond${e._id} = ${o};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}, value: subCondVar${e._id}, compareWith: "${n}"});`),`subCond${e._id}`}renderDebug(e){let t=this.state.settings.tagCard;return t===`()`?_.t(`Triggered`):`${e.data.result.toString().toUpperCase()} [${e.data.value} ${t} ${e.data.compareWith}]`}_setInputs(t,n,r,i,a){var o;let s=this.isAllTriggersOnState();n||=this.state.settings.tagCard,r||=this.state.settings.oidType,i||=this.state.settings.oidUnit,a||=this.state.settings.oidStates,t===void 0&&(t=this.state.settings.useTrigger),s&&t&&((o=this.props.userRules)==null||(o=o.triggers)==null?void 0:o.length)===1&&(r=this.props.userRules.triggers[0].oidType,i=this.props.userRules.triggers[0].oidUnit,a=this.props.userRules.triggers[0].oidStates);let c=e.getStaticData().tagCardArray,l=c.find(e=>e.title===n)||c[0],u,d=null;r===`number`?(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`},{title:`()`,title2:`[hysteresis]`,text:`hysteresis`}],a&&(d=Object.keys(a).map(e=>a?{value:e,title:a[e]}:null).filter(e=>e))):r===`boolean`?(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}],d=[{title:`false`,value:!1},{title:`true`,value:!0}]):(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`},{title:`.`,title2:`[includes]`,text:`includes`}],a&&(d=Object.keys(a).map(e=>({value:e,title:a?a[e]:e.toString()}))));let f=null;u.find(e=>e.title===n)||(n=u[0].title,f||={...this.state.settings},f.tagCard=n);let p,m={nameRender:`renderText`,defaultValue:``,attr:`value`,frontText:n===`()`?`Limit`:(l==null?void 0:l.text)||`compare with`,doNotTranslateBack:!0,backText:i};d&&(m={nameRender:`renderSelect`,defaultValue:d[0].value,options:d,attr:`value`,frontText:(l==null?void 0:l.text)||`compare with`,doNotTranslateBack:!0,backText:i},d.find(e=>e.value===this.state.settings.value)||(f||={...this.state.settings},f.value=d[0].value),d.length<=2&&(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}])),p=s&&t?[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`,defaultValue:!1},m]:s?[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`},{nameRender:`renderObjectID`,attr:`oid`,defaultValue:``},m]:[{nameRender:`renderObjectID`,attr:`oid`,defaultValue:``},m],n===`()`&&(p.splice(1,0,{nameRender:`renderDialog`,icon:`HelpOutline`,frontText:`Explanation`,onShowDialog:this.onShowHelp}),p.splice(2,0,{nameRender:`renderSelect`,attr:`histComp`,defaultValue:`>`,frontText:`Condition`,doNotTranslate:!0,options:[{title:`>`,value:`>`},{title:`>=`,value:`>=`},{title:`<`,value:`<`},{title:`<=`,value:`<=`},{title:`=`,value:`=`},{title:`<>`,value:`<>`}]}),p.push({frontText:`Δ`,doNotTranslate:!0,nameRender:`renderNumber`,noHelperText:!0,attr:`hist`,defaultValue:1,doNotTranslateBack:!0,backText:i}));let h={iconTag:!0,tagCardArray:u,inputs:p};this.setState(h,()=>super.onTagChange(null,()=>{f&&(this.setState({settings:f}),this.props.onChange(f))}))}onValueChanged(e,t){typeof e==`object`?this._setInputs(e.useTrigger,e.tagCard,e.oidType,e.states):t===`useTrigger`?this._setInputs(e):t===`oidType`?this._setInputs(void 0,void 0,e):t===`oidUnit`?this._setInputs(void 0,void 0,void 0,e):t===`oidStates`&&this._setInputs(void 0,void 0,void 0,void 0,e)}onUpdate(){this._setInputs(this.state.settings.useTrigger)}onTagChange(e){this._setInputs(this.state.settings.useTrigger,e)}getSummary(){let{useTrigger:e,tagCard:t,value:n,oid:r}=this.state.settings;if(!e&&!r)return null;let i=e?void 0:this.objectName(r);return{title:`${e?_.t(`Trigger value`):i||r||``} ${t||`=`} ${n===void 0||n===``?`…`:String(n)}`,subtitle:i?r:void 0}}static getStaticData(){return{acceptedBy:`conditions`,name:`State condition`,id:`ConditionState`,icon:`Shuffle`,tagCardArray:[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`},{title:`.`,title2:`[includes]`,text:`includes`},{title:`()`,title2:`[hysteresis]`,text:`hysteresis`}],title:`Compares the state value with user defined value`}}getData(){return e.getStaticData()}renderSpecific(){return this.state.showHysteresisHelp?g(b,{open:!0,maxWidth:`md`,onClose:()=>this.setState({showHysteresisHelp:!1}),"aria-labelledby":`alert-dialog-title`,"aria-describedby":`alert-dialog-description`,children:[u(h,{children:u(S,{id:`alert-dialog-description`,children:u(`img`,{src:ve,alt:`Hysteresis`})})}),u(l,{children:u(s,{onClick:()=>this.setState({showHysteresisHelp:!1}),color:`primary`,autoFocus:!0,children:_.t(`OK`)})})]}):null}},J=[31,29,31,30,31,30,31,31,30,31,30,31],be=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=e.tagCard===`=`?`===`:e.tagCard===`<>`?`!==`:e.tagCard,r;if(e.withDate){let[t,i]=(e.date||`01.01`).toString().split(`.`),a=parseInt(i,10)||0,o=parseInt(t,10)||0;o>12?o=12:o<0&&(o=0),a>J[o]?a=J[o]:a<0&&(a=0),r=a&&o?`formatDate(Date.now(), 'MM.DD-hh:mm') ${n} "${e.date}-${e.time}"`:a===0&&o?`formatDate(Date.now(), 'MM-hh:mm') ${n} "${o.toString().padStart(2,`0`)}-${e.time}"`:o===0&&a?`formatDate(Date.now(), 'DD-hh:mm') ${n} "${a.toString().padStart(2,`0`)}-${e.time}"`:`formatDate(Date.now(), 'hh:mm') ${n} "${e.time}"`}else r=`formatDate(Date.now(), 'hh:mm') ${n} "${e.time}"`;return t.conditionsVars.push(`const subCond${e._id} = ${r};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}});`),`subCond${e._id}`}_setInputs(t,n){n=n===void 0?this.state.settings.withDate:n,t||=this.state.settings.tagCard;let r=e.getStaticData().tagCardArray,i=r==null?void 0:r.find(e=>e.title===t),a=[{nameRender:`renderNameText`,attr:`interval`,defaultValue:`Actual time of day`},{frontText:(i==null?void 0:i.text)||t,nameRender:`renderTime`,attr:`time`,defaultValue:`12:00`},{frontText:`with date`,nameRender:`renderCheckbox`,attr:`withDate`,defaultValue:!1}];n&&a.push({nameRender:`renderDate`,attr:`date`,defaultValue:`01.01`}),this.setState({inputs:a,iconTag:!0},()=>super.onTagChange())}onValueChanged(e,t){t===`withDate`&&this._setInputs(void 0,e)}onTagChange(e){this._setInputs(e)}getSummary(){let{tagCard:e,time:t,withDate:n,date:r}=this.state.settings;if(!t)return null;let i=n&&r?`${t} · ${r}`:t;return{title:`${_.t(`Actual time of day`)} ${e||`=`} ${i}`}}static getStaticData(){return{acceptedBy:`conditions`,name:`Time condition`,id:`ConditionTime`,icon:`Shuffle`,tagCardArray:[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}],title:`Compares current time with the user specific time`}}getData(){return e.getStaticData()}},xe=class e extends A{constructor(t){super(t,e.getStaticData()),y(this,`coordinates`,null)}static compile(e,t){let n=e.tagCard===`=`?`===`:e.tagCard===`<>`?`!==`:e.tagCard,r;e.offset&&(r=parseInt(e.offsetValue,10)||0);let i=`formatDate(Date.now(), 'hh:mm') ${n} formatDate(getAstroDate("${e.astro}"${r?`, undefined, ${r}`:``}), 'hh:mm')`;return t.conditionsVars.push(`const subCond${e._id} = ${i};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: ${i}});`),i}static _time2String(e){return e?`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}`:`--:--`}getSummary(){let{astro:e,tagCard:t,offset:n,offsetValue:r}=this.state.settings;if(!e)return null;let i=parseInt(r,10)||0,a=this.optionTitle(`astro`,e,`title2`),o=n&&i?` ${i>0?`+`:``}${i} ${_.t(`minutes`)}`:``;return{title:`${_.t(`Actual time of day`)} ${t||`=`} ${e}${o}`,subtitle:a}}onValueChanged(e,t){t===`astro`?this._setAstro(e):t===`offset`?this._setAstro(void 0,e):t===`offsetValue`&&this._setAstro(void 0,void 0,e)}async _setAstro(t,n,r){if(t=t||this.state.settings.astro||`solarNoon`,n=n===void 0?this.state.settings.offset:n,r=r===void 0?this.state.settings.offsetValue:r,r=parseInt(r,10)||0,!this.coordinates){let e=await this.props.socket.getObject(`system.adapter.javascript.0`);if(!(e!=null&&e.native.latitude)&&!(e!=null&&e.native.longitude)){let e=await this.props.socket.getObject(`system.config`);this.coordinates=e&&(e.common.latitude||e.common.longitude)?{latitude:e.common.latitude,longitude:e.common.longitude}:null}else this.coordinates={latitude:e==null?void 0:e.native.latitude,longitude:e==null?void 0:e.native.longitude}}let i=this.coordinates?V.default.getTimes(new Date,this.coordinates.latitude,this.coordinates.longitude):null,a=i?Object.keys(i).map(t=>({value:t,title:t,title2:`[${e._time2String(i[t])}]`,order:e._time2String(i[t])})):[];a.sort((e,t)=>e.order>t.order?1:e.order<t.order?-1:0);let o=e.getStaticData().tagCardArray,s=o.find(e=>e.title===this.state.settings.tagCard)||o[0],c=`--:--`;if(t&&i&&i[t]){let a=new Date(i[t]);n&&a.setMinutes(a.getMinutes()+parseInt(r,10)),c=`(${_.t(s.text)} ${e._time2String(a)})`}let l;l=n?[{nameRender:`renderNameText`,defaultValue:`Actual time of day`,attr:`text`},{frontText:s.text,attr:`astro`,nameRender:`renderSelect`,options:a,doNotTranslate2:!0,defaultValue:`solarNoon`},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{backText:r===1?`minute`:`minutes`,frontText:`offset`,nameRender:`renderNumber`,defaultValue:0,attr:`offsetValue`,noHelperText:!0},{nameRender:`renderNameText`,attr:`textTime`,doNotTranslate:!0,defaultValue:c}]:[{nameRender:`renderNameText`,defaultValue:`Actual time of day`,attr:`text`},{frontText:s.text,attr:`astro`,nameRender:`renderSelect`,options:a,doNotTranslate2:!0,defaultValue:`solarNoon`},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{nameRender:`renderNameText`,attr:`textTime`,doNotTranslate:!0,defaultValue:c}],this.setState({inputs:l},()=>super.onTagChange())}onTagChange(){this._setAstro()}static getStaticData(){return{acceptedBy:`conditions`,name:`Astronomical`,id:`ConditionAstronomical`,icon:`Brightness3`,tagCardArray:[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal to`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal to`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}],title:`Compares current time with astronomical event`}}getData(){return e.getStaticData()}},Y=[{value:`_`,title:`Every day`,only:!0},{value:`1`,title:`Monday`,titleShort:`Mo`},{value:`2`,title:`Tuesday`,titleShort:`Tu`},{value:`3`,title:`Wednesday`,titleShort:`We`},{value:`4`,title:`Thursday`,titleShort:`Th`},{value:`5`,title:`Friday`,titleShort:`Fr`},{value:`6`,title:`Saturday`,titleShort:`Sa`},{value:`0`,title:`Sunday`,titleShort:`Su`}],Se=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=e.dow||[],r=n.filter(e=>e!==`_`).map(e=>parseInt(e,10)),i=!r.length||n.includes(`_`)?`true`:`[${r.join(`, `)}].includes(new Date().getDay())`;return t.conditionsVars.push(`const subCond${e._id} = ${i};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}});`),`subCond${e._id}`}onTagChange(){this.setState({inputs:[{nameRender:`renderNameText`,attr:`text`,defaultValue:`Day of week`},{nameRender:`renderSelect`,attr:`dow`,multiple:!0,default:``,defaultValue:[`1`,`2`,`3`,`4`,`5`],options:Y}]},()=>super.onTagChange())}getSummary(){let e=this.state.settings.dow;if(!(e!=null&&e.length))return null;if(e.includes(`_`))return{title:_.t(`Every day`)};let t=Y.filter(t=>t.value!==`_`&&e.includes(t.value)).map(e=>_.t(e.titleShort));return{title:`${_.t(`Day of week`)}: ${t.join(`, `)}`}}static getStaticData(){return{acceptedBy:`conditions`,name:`Weekday`,id:`ConditionWeekday`,icon:`CalendarMonth`,title:`Let the rule run only on the selected days of the week`}}getData(){return e.getStaticData()}},Ce=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=((e.func||``).trim()||`return true;`).split(`
62
+ }`,ye=class e extends A{constructor(t){super(t,e.getStaticData()),v(this,`onShowHelp`,()=>this.setState({showHysteresisHelp:!0}))}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e,t){let n=e.value,r=n==null;r&&(n=!1);let i=()=>(r?``:String(n)).replace(/"/g,`\\"`),a,o;if(e.tagCard===`()`)t.prelines||=[],t.prelines.find(e=>e!==q)||t.prelines.push(q),e.useTrigger?(a=`obj.state.val`,n===``&&(n=0),o=`__hysteresis(subCondVar${e._id}, ${n}, __%%STATE%%__, ${e.hist}, "${e.histComp}")`):(a=`(await getStateAsync("${e.oid}")).val`,n===``&&(n=0),typeof n==`string`&&parseFloat(n.trim()).toString()!==n.trim()&&(n=`"${n}"`),o=`__hysteresis(subCondVar${e._id}, ${n}, __%%STATE%%__, ${e.hist}, "${e.histComp}")`);else if(e.tagCard!==`includes`){let r=e.tagCard===`=`?`==`:e.tagCard===`<>`?`!=`:e.tagCard;if(e.useTrigger){var s;a=`obj.state.val`,(t==null||(s=t.trigger)==null?void 0:s.oidType)===`string`?(n=i(),o=`subCondVar${e._id} ${r} "${n}"`):(n===``&&(n=0),typeof n==`string`&&parseFloat(n.trim()).toString()!==n.trim()&&(n=`"${n}"`),o=`subCondVar${e._id} ${r} ${n}`)}else a=`(await getStateAsync("${e.oid}")).val`,e.oidType===`string`?(n=i(),o=`subCondVar${e._id} ${r} "${n}"`):(n===``&&(n=0),typeof n==`string`&&parseFloat(n.trim()).toString()!==n.trim()&&(n=`"${n}"`),o=`subCondVar${e._id} ${r} ${n}`)}else if(e.useTrigger){var c;a=`obj.state.val`,(t==null||(c=t.trigger)==null?void 0:c.oidType)===`string`?(n=i(),o=`obj.state.val.includes("${n}")`):o=`false`}else a=`(await getStateAsync("${e.oid}")).val`,e.oidType===`string`?(n=i(),o=`subCondVar${e._id}.includes("${n}")`):o=`false`;return t.conditionsStates.push({name:`subCondVar${e._id}`,id:e.oid}),t.conditionsVars.push(`const subCondVar${e._id} = ${a};`),t.conditionsVars.push(`const subCond${e._id} = ${o};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}, value: subCondVar${e._id}, compareWith: "${n}"});`),`subCond${e._id}`}renderDebug(e){let t=this.state.settings.tagCard;return t===`()`?h.t(`Triggered`):`${e.data.result.toString().toUpperCase()} [${e.data.value} ${t} ${e.data.compareWith}]`}_setInputs(t,n,r,i,a){var o;let s=this.isAllTriggersOnState();n||=this.state.settings.tagCard,r||=this.state.settings.oidType,i||=this.state.settings.oidUnit,a||=this.state.settings.oidStates,t===void 0&&(t=this.state.settings.useTrigger),s&&t&&((o=this.props.userRules)==null||(o=o.triggers)==null?void 0:o.length)===1&&(r=this.props.userRules.triggers[0].oidType,i=this.props.userRules.triggers[0].oidUnit,a=this.props.userRules.triggers[0].oidStates);let c=e.getStaticData().tagCardArray,l=c.find(e=>e.title===n)||c[0],u,d=null;r===`number`?(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`},{title:`()`,title2:`[hysteresis]`,text:`hysteresis`}],a&&(d=Object.keys(a).map(e=>a?{value:e,title:a[e]}:null).filter(e=>e))):r===`boolean`?(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}],d=[{title:`false`,value:!1},{title:`true`,value:!0}]):(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`},{title:`.`,title2:`[includes]`,text:`includes`}],a&&(d=Object.keys(a).map(e=>({value:e,title:a?a[e]:e.toString()}))));let f=null;u.find(e=>e.title===n)||(n=u[0].title,f||={...this.state.settings},f.tagCard=n);let p,m={nameRender:`renderText`,defaultValue:``,attr:`value`,frontText:n===`()`?`Limit`:(l==null?void 0:l.text)||`compare with`,doNotTranslateBack:!0,backText:i};d&&(m={nameRender:`renderSelect`,defaultValue:d[0].value,options:d,attr:`value`,frontText:(l==null?void 0:l.text)||`compare with`,doNotTranslateBack:!0,backText:i},d.find(e=>e.value===this.state.settings.value)||(f||={...this.state.settings},f.value=d[0].value),d.length<=2&&(u=[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}])),p=s&&t?[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`,defaultValue:!1},m]:s?[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`},{nameRender:`renderObjectID`,attr:`oid`,defaultValue:``},m]:[{nameRender:`renderObjectID`,attr:`oid`,defaultValue:``},m],n===`()`&&(p.splice(1,0,{nameRender:`renderDialog`,icon:`HelpOutline`,frontText:`Explanation`,onShowDialog:this.onShowHelp}),p.splice(2,0,{nameRender:`renderSelect`,attr:`histComp`,defaultValue:`>`,frontText:`Condition`,doNotTranslate:!0,options:[{title:`>`,value:`>`},{title:`>=`,value:`>=`},{title:`<`,value:`<`},{title:`<=`,value:`<=`},{title:`=`,value:`=`},{title:`<>`,value:`<>`}]}),p.push({frontText:`Δ`,doNotTranslate:!0,nameRender:`renderNumber`,noHelperText:!0,attr:`hist`,defaultValue:1,doNotTranslateBack:!0,backText:i}));let h={iconTag:!0,tagCardArray:u,inputs:p};this.setState(h,()=>super.onTagChange(null,()=>{f&&(this.setState({settings:f}),this.props.onChange(f))}))}onValueChanged(e,t){typeof e==`object`?this._setInputs(e.useTrigger,e.tagCard,e.oidType,e.states):t===`useTrigger`?this._setInputs(e):t===`oidType`?this._setInputs(void 0,void 0,e):t===`oidUnit`?this._setInputs(void 0,void 0,void 0,e):t===`oidStates`&&this._setInputs(void 0,void 0,void 0,void 0,e)}onUpdate(){this._setInputs(this.state.settings.useTrigger)}onTagChange(e){this._setInputs(this.state.settings.useTrigger,e)}getSummary(){let{useTrigger:e,tagCard:t,value:n,oid:r}=this.state.settings;if(!e&&!r)return null;let i=e?void 0:this.objectName(r);return{title:`${e?h.t(`Trigger value`):i||r||``} ${t||`=`} ${n===void 0||n===``?`…`:String(n)}`,subtitle:i?r:void 0}}static getStaticData(){return{acceptedBy:`conditions`,name:`State condition`,id:`ConditionState`,icon:`Shuffle`,tagCardArray:[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`},{title:`.`,title2:`[includes]`,text:`includes`},{title:`()`,title2:`[hysteresis]`,text:`hysteresis`}],title:`Compares the state value with user defined value`}}getData(){return e.getStaticData()}renderSpecific(){return this.state.showHysteresisHelp?x(c,{open:!0,maxWidth:`md`,onClose:()=>this.setState({showHysteresisHelp:!1}),"aria-labelledby":`alert-dialog-title`,"aria-describedby":`alert-dialog-description`,children:[m(b,{children:m(l,{id:`alert-dialog-description`,children:m(`img`,{src:ve,alt:`Hysteresis`})})}),m(p,{children:m(s,{onClick:()=>this.setState({showHysteresisHelp:!1}),color:`primary`,autoFocus:!0,children:h.t(`OK`)})})]}):null}},J=[31,29,31,30,31,30,31,31,30,31,30,31],be=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=e.tagCard===`=`?`===`:e.tagCard===`<>`?`!==`:e.tagCard,r;if(e.withDate){let[t,i]=(e.date||`01.01`).toString().split(`.`),a=parseInt(i,10)||0,o=parseInt(t,10)||0;o>12?o=12:o<0&&(o=0),a>J[o]?a=J[o]:a<0&&(a=0),r=a&&o?`formatDate(Date.now(), 'MM.DD-hh:mm') ${n} "${e.date}-${e.time}"`:a===0&&o?`formatDate(Date.now(), 'MM-hh:mm') ${n} "${o.toString().padStart(2,`0`)}-${e.time}"`:o===0&&a?`formatDate(Date.now(), 'DD-hh:mm') ${n} "${a.toString().padStart(2,`0`)}-${e.time}"`:`formatDate(Date.now(), 'hh:mm') ${n} "${e.time}"`}else r=`formatDate(Date.now(), 'hh:mm') ${n} "${e.time}"`;return t.conditionsVars.push(`const subCond${e._id} = ${r};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}});`),`subCond${e._id}`}_setInputs(t,n){n=n===void 0?this.state.settings.withDate:n,t||=this.state.settings.tagCard;let r=e.getStaticData().tagCardArray,i=r==null?void 0:r.find(e=>e.title===t),a=[{nameRender:`renderNameText`,attr:`interval`,defaultValue:`Actual time of day`},{frontText:(i==null?void 0:i.text)||t,nameRender:`renderTime`,attr:`time`,defaultValue:`12:00`},{frontText:`with date`,nameRender:`renderCheckbox`,attr:`withDate`,defaultValue:!1}];n&&a.push({nameRender:`renderDate`,attr:`date`,defaultValue:`01.01`}),this.setState({inputs:a,iconTag:!0},()=>super.onTagChange())}onValueChanged(e,t){t===`withDate`&&this._setInputs(void 0,e)}onTagChange(e){this._setInputs(e)}getSummary(){let{tagCard:e,time:t,withDate:n,date:r}=this.state.settings;if(!t)return null;let i=n&&r?`${t} · ${r}`:t;return{title:`${h.t(`Actual time of day`)} ${e||`=`} ${i}`}}static getStaticData(){return{acceptedBy:`conditions`,name:`Time condition`,id:`ConditionTime`,icon:`Shuffle`,tagCardArray:[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}],title:`Compares current time with the user specific time`}}getData(){return e.getStaticData()}},xe=class e extends A{constructor(t){super(t,e.getStaticData()),v(this,`coordinates`,null)}static compile(e,t){let n=e.tagCard===`=`?`===`:e.tagCard===`<>`?`!==`:e.tagCard,r;e.offset&&(r=parseInt(e.offsetValue,10)||0);let i=`formatDate(Date.now(), 'hh:mm') ${n} formatDate(getAstroDate("${e.astro}"${r?`, undefined, ${r}`:``}), 'hh:mm')`;return t.conditionsVars.push(`const subCond${e._id} = ${i};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: ${i}});`),i}static _time2String(e){return e?`${e.getHours().toString().padStart(2,`0`)}:${e.getMinutes().toString().padStart(2,`0`)}`:`--:--`}getSummary(){let{astro:e,tagCard:t,offset:n,offsetValue:r}=this.state.settings;if(!e)return null;let i=parseInt(r,10)||0,a=this.optionTitle(`astro`,e,`title2`),o=n&&i?` ${i>0?`+`:``}${i} ${h.t(`minutes`)}`:``;return{title:`${h.t(`Actual time of day`)} ${t||`=`} ${e}${o}`,subtitle:a}}onValueChanged(e,t){t===`astro`?this._setAstro(e):t===`offset`?this._setAstro(void 0,e):t===`offsetValue`&&this._setAstro(void 0,void 0,e)}async _setAstro(t,n,r){if(t=t||this.state.settings.astro||`solarNoon`,n=n===void 0?this.state.settings.offset:n,r=r===void 0?this.state.settings.offsetValue:r,r=parseInt(r,10)||0,!this.coordinates){let e=await this.props.socket.getObject(`system.adapter.javascript.0`);if(!(e!=null&&e.native.latitude)&&!(e!=null&&e.native.longitude)){let e=await this.props.socket.getObject(`system.config`);this.coordinates=e&&(e.common.latitude||e.common.longitude)?{latitude:e.common.latitude,longitude:e.common.longitude}:null}else this.coordinates={latitude:e==null?void 0:e.native.latitude,longitude:e==null?void 0:e.native.longitude}}let i=this.coordinates?V.default.getTimes(new Date,this.coordinates.latitude,this.coordinates.longitude):null,a=i?Object.keys(i).map(t=>({value:t,title:t,title2:`[${e._time2String(i[t])}]`,order:e._time2String(i[t])})):[];a.sort((e,t)=>e.order>t.order?1:e.order<t.order?-1:0);let o=e.getStaticData().tagCardArray,s=o.find(e=>e.title===this.state.settings.tagCard)||o[0],c=`--:--`;if(t&&i&&i[t]){let a=new Date(i[t]);n&&a.setMinutes(a.getMinutes()+parseInt(r,10)),c=`(${h.t(s.text)} ${e._time2String(a)})`}let l;l=n?[{nameRender:`renderNameText`,defaultValue:`Actual time of day`,attr:`text`},{frontText:s.text,attr:`astro`,nameRender:`renderSelect`,options:a,doNotTranslate2:!0,defaultValue:`solarNoon`},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{backText:r===1?`minute`:`minutes`,frontText:`offset`,nameRender:`renderNumber`,defaultValue:0,attr:`offsetValue`,noHelperText:!0},{nameRender:`renderNameText`,attr:`textTime`,doNotTranslate:!0,defaultValue:c}]:[{nameRender:`renderNameText`,defaultValue:`Actual time of day`,attr:`text`},{frontText:s.text,attr:`astro`,nameRender:`renderSelect`,options:a,doNotTranslate2:!0,defaultValue:`solarNoon`},{backText:`with offset`,nameRender:`renderCheckbox`,attr:`offset`},{nameRender:`renderNameText`,attr:`textTime`,doNotTranslate:!0,defaultValue:c}],this.setState({inputs:l},()=>super.onTagChange())}onTagChange(){this._setAstro()}static getStaticData(){return{acceptedBy:`conditions`,name:`Astronomical`,id:`ConditionAstronomical`,icon:`Brightness3`,tagCardArray:[{title:`=`,title2:`[equal]`,text:`equal to`},{title:`>=`,title2:`[greater or equal]`,text:`greater or equal to`},{title:`>`,title2:`[greater]`,text:`greater than`},{title:`<=`,title2:`[less or equal]`,text:`less or equal to`},{title:`<`,title2:`[less]`,text:`less than`},{title:`<>`,title2:`[not equal]`,text:`not equal to`}],title:`Compares current time with astronomical event`}}getData(){return e.getStaticData()}},Y=[{value:`_`,title:`Every day`,only:!0},{value:`1`,title:`Monday`,titleShort:`Mo`},{value:`2`,title:`Tuesday`,titleShort:`Tu`},{value:`3`,title:`Wednesday`,titleShort:`We`},{value:`4`,title:`Thursday`,titleShort:`Th`},{value:`5`,title:`Friday`,titleShort:`Fr`},{value:`6`,title:`Saturday`,titleShort:`Sa`},{value:`0`,title:`Sunday`,titleShort:`Su`}],Se=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=e.dow||[],r=n.filter(e=>e!==`_`).map(e=>parseInt(e,10)),i=!r.length||n.includes(`_`)?`true`:`[${r.join(`, `)}].includes(new Date().getDay())`;return t.conditionsVars.push(`const subCond${e._id} = ${i};`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}});`),`subCond${e._id}`}onTagChange(){this.setState({inputs:[{nameRender:`renderNameText`,attr:`text`,defaultValue:`Day of week`},{nameRender:`renderSelect`,attr:`dow`,multiple:!0,default:``,defaultValue:[`1`,`2`,`3`,`4`,`5`],options:Y}]},()=>super.onTagChange())}getSummary(){let e=this.state.settings.dow;if(!(e!=null&&e.length))return null;if(e.includes(`_`))return{title:h.t(`Every day`)};let t=Y.filter(t=>t.value!==`_`&&e.includes(t.value)).map(e=>h.t(e.titleShort));return{title:`${h.t(`Day of week`)}: ${t.join(`, `)}`}}static getStaticData(){return{acceptedBy:`conditions`,name:`Weekday`,id:`ConditionWeekday`,icon:`CalendarMonth`,title:`Let the rule run only on the selected days of the week`}}getData(){return e.getStaticData()}},Ce=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){let n=((e.func||``).trim()||`return true;`).split(`
63
63
  `).map(e=>` ${e}`).join(`
64
- `);return t.conditionsVars.push(`const subCond${e._id} = !!(await (async () => {\n${n}\n })());`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}});`),`subCond${e._id}`}renderDebug(e){return`${_.t(`Condition`)}: ${e.data.result}`}getSummary(){let e=String(this.state.settings.func||``).split(`
65
- `).map(e=>e.trim()).filter(Boolean);return e.length?{title:e.length>1?`${e[0]} …`:e[0]}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`func`,noTextEdit:!0,defaultValue:`return getState("javascript.0.variable").val > 5;`,nameBlock:`Condition`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`conditions`,name:`User condition`,id:`ConditionFunction`,icon:`Functions`,title:`Write your own condition`,helpDialog:`This is an advanced option. The code is the body of a function and must return the result, e.g. "return getState('javascript.0.variable').val > 5;". You may use await inside.`}}getData(){return e.getStaticData()}},we=class e extends A{constructor(t){super(t,e.getStaticData()),y(this,`instancesPromise`,null)}static compile(e,t){if(!e.instance)return`// no instance defined
64
+ `);return t.conditionsVars.push(`const subCond${e._id} = !!(await (async () => {\n${n}\n })());`),t.conditionsDebug.push(`_sendToFrontEnd(${e._id}, {result: subCond${e._id}});`),`subCond${e._id}`}renderDebug(e){return`${h.t(`Condition`)}: ${e.data.result}`}getSummary(){let e=String(this.state.settings.func||``).split(`
65
+ `).map(e=>e.trim()).filter(Boolean);return e.length?{title:e.length>1?`${e[0]} …`:e[0]}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`func`,noTextEdit:!0,defaultValue:`return getState("javascript.0.variable").val > 5;`,nameBlock:`Condition`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`conditions`,name:`User condition`,id:`ConditionFunction`,icon:`Functions`,title:`Write your own condition`,helpDialog:`This is an advanced option. The code is the body of a function and must return the result, e.g. "return getState('javascript.0.variable').val > 5;". You may use await inside.`}}getData(){return e.getStaticData()}},we=class e extends A{constructor(t){super(t,e.getStaticData()),v(this,`instancesPromise`,null)}static compile(e,t){if(!e.instance)return`// no instance defined
66
66
  _sendToFrontEnd(${e._id}, {message: 'No instance defined'});`;let n=JSON.stringify(e.command||`send`),r=JSON.stringify(e.instance),i=`${e.instance} ${e.command||`send`}`.replace(/[\r\n]+/g,` `);if(e.asJson){let t=(e.message||``).trim();try{JSON.parse(t)}catch{return`// invalid JSON
67
67
  _sendToFrontEnd(${e._id}, {message: 'Invalid JSON'});`}return`// sendTo ${i}
68
68
  \t\t_sendToFrontEnd(${e._id}, {message: ${JSON.stringify(t)}});
@@ -70,48 +70,48 @@ _sendToFrontEnd(${e._id}, {message: 'Invalid JSON'});`}return`// sendTo ${i}
70
70
  \t\tconst subActionVar${e._id} = ${JSON.stringify(e.message)}${A.getReplacesInText(t)};
71
71
  \t\t_sendToFrontEnd(${e._id}, {message: subActionVar${e._id}});
72
72
  \t\tsendTo(${r}, ${n}, subActionVar${e._id});`:`// no message defined
73
- _sendToFrontEnd(${e._id}, {message: 'No message defined'});`}renderDebug(e){return`${_.t(`Sent:`)} ${e.data.message}`}inputs(e){let t=!!this.state.settings.asJson;return[{nameRender:`renderSelect`,attr:`instance`,frontText:`Instance:`,doNotTranslate:!0,defaultValue:e[0]||``,options:e.map(e=>({value:e,title:e}))},{nameRender:`renderText`,attr:`command`,frontText:`Command:`,defaultValue:`send`},{nameRender:`renderModalInput`,attr:`message`,nameBlock:``,frontText:t?`JSON:`:`Text:`,defaultValue:`Hello`},{nameRender:`renderCheckbox`,attr:`asJson`,backText:`as JSON`,defaultValue:!1}]}setInputs(){this.setState({inputs:this.inputs([])},()=>super.onTagChange()),this.instancesPromise||=this.props.socket.getAdapterInstances(),this.instancesPromise.then(e=>{if(!this.mounted)return;let t=(e||[]).map(e=>{var t;return e==null||(t=e._id)==null?void 0:t.replace(`system.adapter.`,``)}).filter(e=>!!e).sort();this.setState({inputs:this.inputs(t)},()=>super.onTagChange())})}onTagChange(){this.setInputs()}onValueChanged(e,t){t===`asJson`&&this.setInputs()}getSummary(){let{instance:e,command:t,message:n,asJson:r}=this.state.settings;return!e||!n?null:{kicker:r?_.t(`as JSON`):void 0,title:String(n),subtitle:`${e} · ${t||`send`}`}}static getStaticData(){return{acceptedBy:`actions`,name:`Send to adapter`,id:`ActionSendTo`,icon:`Send`,title:`Sends a message to any adapter instance`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},Te=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return e.message?`// notification ${e.isAlert?`alert`:`message`}
73
+ _sendToFrontEnd(${e._id}, {message: 'No message defined'});`}renderDebug(e){return`${h.t(`Sent:`)} ${e.data.message}`}inputs(e){let t=!!this.state.settings.asJson;return[{nameRender:`renderSelect`,attr:`instance`,frontText:`Instance:`,doNotTranslate:!0,defaultValue:e[0]||``,options:e.map(e=>({value:e,title:e}))},{nameRender:`renderText`,attr:`command`,frontText:`Command:`,defaultValue:`send`},{nameRender:`renderModalInput`,attr:`message`,nameBlock:``,frontText:t?`JSON:`:`Text:`,defaultValue:`Hello`},{nameRender:`renderCheckbox`,attr:`asJson`,backText:`as JSON`,defaultValue:!1}]}setInputs(){this.setState({inputs:this.inputs([])},()=>super.onTagChange()),this.instancesPromise||=this.props.socket.getAdapterInstances(),this.instancesPromise.then(e=>{if(!this.mounted)return;let t=(e||[]).map(e=>{var t;return e==null||(t=e._id)==null?void 0:t.replace(`system.adapter.`,``)}).filter(e=>!!e).sort();this.setState({inputs:this.inputs(t)},()=>super.onTagChange())})}onTagChange(){this.setInputs()}onValueChanged(e,t){t===`asJson`&&this.setInputs()}getSummary(){let{instance:e,command:t,message:n,asJson:r}=this.state.settings;return!e||!n?null:{kicker:r?h.t(`as JSON`):void 0,title:String(n),subtitle:`${e} · ${t||`send`}`}}static getStaticData(){return{acceptedBy:`actions`,name:`Send to adapter`,id:`ActionSendTo`,icon:`Send`,title:`Sends a message to any adapter instance`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},Te=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return e.message?`// notification ${e.isAlert?`alert`:`message`}
74
74
  \t\tconst subActionVar${e._id} = ${JSON.stringify(e.message)}${A.getReplacesInText(t)};
75
75
  \t\t_sendToFrontEnd(${e._id}, {message: subActionVar${e._id}});
76
76
  \t\tregisterNotification(subActionVar${e._id}, ${!!e.isAlert});`:`// no notification text defined
77
- _sendToFrontEnd(${e._id}, {message: 'No text defined'});`}renderDebug(e){return`${_.t(`Registered:`)} ${e.data.message}`}getSummary(){let{message:e,isAlert:t}=this.state.settings;return e?{kicker:t?_.t(`Alert`):void 0,title:String(e)}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`message`,defaultValue:`My device triggered`,nameBlock:`Notification text`},{nameRender:`renderCheckbox`,attr:`isAlert`,backText:`as alert`,defaultValue:!1}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`actions`,name:`Notification`,id:`ActionNotification`,icon:`NotificationsActive`,title:`Creates an ioBroker notification, which is shown in the admin`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},Ee=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){if(!e.message)return`// no message name defined
77
+ _sendToFrontEnd(${e._id}, {message: 'No text defined'});`}renderDebug(e){return`${h.t(`Registered:`)} ${e.data.message}`}getSummary(){let{message:e,isAlert:t}=this.state.settings;return e?{kicker:t?h.t(`Alert`):void 0,title:String(e)}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`message`,defaultValue:`My device triggered`,nameBlock:`Notification text`},{nameRender:`renderCheckbox`,attr:`isAlert`,backText:`as alert`,defaultValue:!1}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`actions`,name:`Notification`,id:`ActionNotification`,icon:`NotificationsActive`,title:`Creates an ioBroker notification, which is shown in the admin`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},Ee=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){if(!e.message)return`// no message name defined
78
78
  _sendToFrontEnd(${e._id}, {message: 'No message name defined'});`;let n=JSON.stringify(e.message),r=e.message.replace(/[\r\n]+/g,` `);if(e.asJson){let t=(e.data||``).trim();try{JSON.parse(t)}catch{return`// invalid JSON
79
79
  _sendToFrontEnd(${e._id}, {message: 'Invalid JSON'});`}return`// messageTo ${r}
80
80
  \t\t_sendToFrontEnd(${e._id}, {message: ${JSON.stringify(t)}});
81
81
  \t\tmessageTo(${n}, ${t});`}return`// messageTo ${r}
82
82
  \t\tconst subActionVar${e._id} = ${JSON.stringify(e.data||``)}${A.getReplacesInText(t)};
83
83
  \t\t_sendToFrontEnd(${e._id}, {message: subActionVar${e._id}});
84
- \t\tmessageTo(${n}, subActionVar${e._id});`}renderDebug(e){return`${_.t(`Sent:`)} ${e.data.message}`}inputs(){return[{nameRender:`renderText`,attr:`message`,frontText:`Message name:`,defaultValue:`myMessage`},{nameRender:`renderModalInput`,attr:`data`,nameBlock:``,frontText:this.state.settings.asJson?`JSON:`:`Text:`,defaultValue:`Hello`},{nameRender:`renderCheckbox`,attr:`asJson`,backText:`as JSON`,defaultValue:!1}]}onTagChange(e){this.setState({inputs:this.inputs()},()=>super.onTagChange(e))}onValueChanged(e,t){t===`asJson`&&this.onTagChange()}getSummary(){let{message:e,data:t,asJson:n}=this.state.settings;return e?{kicker:n?_.t(`as JSON`):void 0,title:String(e),subtitle:t?String(t):void 0}:null}static getStaticData(){return{acceptedBy:`actions`,name:`Send message`,id:`ActionMessageTo`,icon:`Forum`,title:`Sends a message to other scripts and rules`,helpDialog:`Every rule with an "On message" trigger of the same name receives it, as does a script with onMessage(). You can use %s in the text to send the current trigger value or %id the triggered object ID.`}}getData(){return e.getStaticData()}};r();var X={valueAck:{color:`#b02323`},valueNotAck:{color:`#12ac15`}},Z=class e extends A{constructor(e){super(e,new.target.getStaticData())}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e,t){let n=e.value;e.useTrigger?n=e.toggle?`!obj.state.val`:`obj.state.val`:(n??=``,typeof e.value==`string`&&parseFloat(e.value).toString()!==e.value&&e.value!==`true`&&e.value!==`false`&&(n=`"${n.replace(/"/g,`\\"`)}"${A.getReplacesInText(t)}`));let r;return r=e.toggle&&!e.useTrigger?`const subActionVar${e._id} = !(await getStateAsync("${e.oid}")).val`:`const subActionVar${e._id} = ${n}`,`// set state ${e.oid} to ${e.toggle&&!e.useTrigger?`toggle`:n}
84
+ \t\tmessageTo(${n}, subActionVar${e._id});`}renderDebug(e){return`${h.t(`Sent:`)} ${e.data.message}`}inputs(){return[{nameRender:`renderText`,attr:`message`,frontText:`Message name:`,defaultValue:`myMessage`},{nameRender:`renderModalInput`,attr:`data`,nameBlock:``,frontText:this.state.settings.asJson?`JSON:`:`Text:`,defaultValue:`Hello`},{nameRender:`renderCheckbox`,attr:`asJson`,backText:`as JSON`,defaultValue:!1}]}onTagChange(e){this.setState({inputs:this.inputs()},()=>super.onTagChange(e))}onValueChanged(e,t){t===`asJson`&&this.onTagChange()}getSummary(){let{message:e,data:t,asJson:n}=this.state.settings;return e?{kicker:n?h.t(`as JSON`):void 0,title:String(e),subtitle:t?String(t):void 0}:null}static getStaticData(){return{acceptedBy:`actions`,name:`Send message`,id:`ActionMessageTo`,icon:`Forum`,title:`Sends a message to other scripts and rules`,helpDialog:`Every rule with an "On message" trigger of the same name receives it, as does a script with onMessage(). You can use %s in the text to send the current trigger value or %id the triggered object ID.`}}getData(){return e.getStaticData()}};o();var X={valueAck:{color:`#b02323`},valueNotAck:{color:`#12ac15`}},Z=class e extends A{constructor(e){super(e,new.target.getStaticData())}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e,t){let n=e.value;e.useTrigger?n=e.toggle?`!obj.state.val`:`obj.state.val`:(n??=``,typeof e.value==`string`&&parseFloat(e.value).toString()!==e.value&&e.value!==`true`&&e.value!==`false`&&(n=`"${n.replace(/"/g,`\\"`)}"${A.getReplacesInText(t)}`));let r;return r=e.toggle&&!e.useTrigger?`const subActionVar${e._id} = !(await getStateAsync("${e.oid}")).val`:`const subActionVar${e._id} = ${n}`,`// set state ${e.oid} to ${e.toggle&&!e.useTrigger?`toggle`:n}
85
85
  \t\t${r};
86
86
  \t\t_sendToFrontEnd(${e._id}, {val: subActionVar${e._id}, ack: ${e.tagCard===`update`}});
87
- \t\tawait setStateAsync("${e.oid}", subActionVar${e._id}, ${e.tagCard===`update`});`}renderDebug(e){return g(`span`,{children:[_.t(`Set:`),` `,u(`span`,{style:e.data.ack?X.valueAck:X.valueNotAck,children:k(e.data.val)})]})}_setInputs(e,t){let n=this.isAllTriggersOnState();t=t===void 0?this.state.settings.toggle:t,e=e===void 0?this.state.settings.useTrigger:e;let r=``,i,{oidType:a,oidUnit:o,oidStates:s,oidMax:c,oidMin:l,oidRole:u,oidWrite:d,oidStep:f}=this.state.settings,p;a&&(a===`number`?(r=`number`,c!==void 0&&l!==void 0&&(r=`slider`)):a===`boolean`?(r=`boolean`,u&&u.includes(`button`)&&d&&(r=`button`)):(r=``,u&&u.includes(`color`)&&(r=`color`)),s&&(i=Object.keys(s).map(e=>({value:e,title:s[e]})),r=`select`));let m;if(n&&e)m=[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`,defaultValue:!1}],r===`boolean`&&m.push({backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1});else{switch(r){case`number`:m=[{backText:o||``,frontText:`with`,nameRender:`renderNumber`,defaultValue:c===void 0?0:c,attr:`value`}],this.state.settings.value!==void 0&&isNaN(parseFloat(this.state.settings.value))&&(p={value:c===void 0?0:c});break;case`slider`:{m=[{nameRender:`renderSlider`,defaultValue:c,min:l,max:c,unit:o,step:f,attr:`value`}];let e=parseFloat(this.state.settings.value);this.state.settings.value!==void 0&&(isNaN(e)||e<l||e>c?p={value:c}:typeof this.state.settings.value!=`number`&&(p={value:e}));break}case`select`:m=[{nameRender:`renderSelect`,frontText:`with`,options:i,defaultValue:(i==null?void 0:i[0].value)||``,attr:`value`}],this.state.settings.value!==void 0&&!(i!=null&&i.find(e=>e.value===this.state.settings.value))&&(p={value:(i==null?void 0:i[0].value)||``});break;case`boolean`:m=[{backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1}],t||m.push({backText:`true`,frontText:`false`,nameRender:`renderSwitch`,defaultValue:!1,attr:`value`}),this.state.settings.value!==void 0&&this.state.settings.value!==!1&&this.state.settings.value!==!0&&(p={value:!1});break;case`button`:m=[{nameRender:`renderButton`,defaultValue:!0,attr:`value`}],this.state.settings.value!==void 0&&this.state.settings.value!==!0&&(p={value:!0});break;case`color`:m=[{nameRender:`renderColor`,frontText:`with`,defaultValue:`#FFFFFF`,attr:`value`}],this.state.settings.value!==void 0&&(typeof this.state.settings.value!=`string`||!this.state.settings.value.startsWith(`#`)&&!this.state.settings.value.startsWith(`rgb`))&&(p={value:`#FFFFFF`});break;default:m=[{backText:o||``,frontText:`with`,nameRender:`renderText`,defaultValue:``,attr:`value`}]}n&&m.unshift({backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`})}return{inputs:m,newSettings:p}}onTagChange(e,t,n,r,i){i=i===void 0?this.state.settings.useTrigger:i;let{inputs:a,newSettings:o}=this._setInputs(i,r);a.unshift({nameRender:`renderObjectID`,attr:`oid`,defaultValue:``,checkReadOnly:!0}),this.setState({inputs:a},()=>super.onTagChange(null,()=>{if(o){let e=JSON.parse(JSON.stringify(this.state.settings));Object.assign(e,o),this.setState(e),this.props.onChange(e)}}))}onValueChanged(e,t){this.onTagChange(void 0,void 0,void 0,t===`toggle`?e:void 0,t===`useTrigger`?e:void 0)}onUpdate(){this.onTagChange()}withUnit(e){let{oidUnit:t,oidType:n,oidStates:r,oidRole:i}=this.state.settings;return!t||r||n===`boolean`||i!=null&&i.includes(`color`)?e:`${e} ${t}`}getSummary(){let{oid:e,value:t,toggle:n,useTrigger:r,tagCard:i}=this.state.settings;if(!e)return null;let a=this.objectName(e),o;return o=r?_.t(`Trigger value`):n?_.t(`toggle`):t===void 0||t===``?`…`:this.withUnit(String(t)),{kicker:i?_.t(i):void 0,title:`${a||e} ← ${o}`,subtitle:a?e:void 0}}static getStaticData(){return{acceptedBy:`actions`,name:`Set state action`,id:`ActionSetState`,icon:`PlayForWork`,tagCardArray:[`control`,`update`],title:`Control or update some state`,helpDialog:`You can use %s in the value to use the current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},De=class e extends Z{static compile(e,t){let n=e.value;e.useTrigger?n=e.toggle?`!obj.state.val`:`obj.state.val`:(n??=``,typeof e.value==`string`&&parseFloat(e.value).toString()!==e.value&&e.value!==`true`&&e.value!==`false`&&(n=`${JSON.stringify(n)}${A.getReplacesInText(t)}`));let r=e.toggle&&!e.useTrigger?`const subActionVar${e._id} = !(await getStateAsync(${JSON.stringify(e.oid)})).val`:`const subActionVar${e._id} = ${n}`;return`// set state ${e.oid} to ${e.toggle&&!e.useTrigger?`toggle`:n} if changed
87
+ \t\tawait setStateAsync("${e.oid}", subActionVar${e._id}, ${e.tagCard===`update`});`}renderDebug(e){return x(`span`,{children:[h.t(`Set:`),` `,m(`span`,{style:e.data.ack?X.valueAck:X.valueNotAck,children:k(e.data.val)})]})}_setInputs(e,t){let n=this.isAllTriggersOnState();t=t===void 0?this.state.settings.toggle:t,e=e===void 0?this.state.settings.useTrigger:e;let r=``,i,{oidType:a,oidUnit:o,oidStates:s,oidMax:c,oidMin:l,oidRole:u,oidWrite:d,oidStep:f}=this.state.settings,p;a&&(a===`number`?(r=`number`,c!==void 0&&l!==void 0&&(r=`slider`)):a===`boolean`?(r=`boolean`,u&&u.includes(`button`)&&d&&(r=`button`)):(r=``,u&&u.includes(`color`)&&(r=`color`)),s&&(i=Object.keys(s).map(e=>({value:e,title:s[e]})),r=`select`));let m;if(n&&e)m=[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`,defaultValue:!1}],r===`boolean`&&m.push({backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1});else{switch(r){case`number`:m=[{backText:o||``,frontText:`with`,nameRender:`renderNumber`,defaultValue:c===void 0?0:c,attr:`value`}],this.state.settings.value!==void 0&&isNaN(parseFloat(this.state.settings.value))&&(p={value:c===void 0?0:c});break;case`slider`:{m=[{nameRender:`renderSlider`,defaultValue:c,min:l,max:c,unit:o,step:f,attr:`value`}];let e=parseFloat(this.state.settings.value);this.state.settings.value!==void 0&&(isNaN(e)||e<l||e>c?p={value:c}:typeof this.state.settings.value!=`number`&&(p={value:e}));break}case`select`:m=[{nameRender:`renderSelect`,frontText:`with`,options:i,defaultValue:(i==null?void 0:i[0].value)||``,attr:`value`}],this.state.settings.value!==void 0&&!(i!=null&&i.find(e=>e.value===this.state.settings.value))&&(p={value:(i==null?void 0:i[0].value)||``});break;case`boolean`:m=[{backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1}],t||m.push({backText:`true`,frontText:`false`,nameRender:`renderSwitch`,defaultValue:!1,attr:`value`}),this.state.settings.value!==void 0&&this.state.settings.value!==!1&&this.state.settings.value!==!0&&(p={value:!1});break;case`button`:m=[{nameRender:`renderButton`,defaultValue:!0,attr:`value`}],this.state.settings.value!==void 0&&this.state.settings.value!==!0&&(p={value:!0});break;case`color`:m=[{nameRender:`renderColor`,frontText:`with`,defaultValue:`#FFFFFF`,attr:`value`}],this.state.settings.value!==void 0&&(typeof this.state.settings.value!=`string`||!this.state.settings.value.startsWith(`#`)&&!this.state.settings.value.startsWith(`rgb`))&&(p={value:`#FFFFFF`});break;default:m=[{backText:o||``,frontText:`with`,nameRender:`renderText`,defaultValue:``,attr:`value`}]}n&&m.unshift({backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`})}return{inputs:m,newSettings:p}}onTagChange(e,t,n,r,i){i=i===void 0?this.state.settings.useTrigger:i;let{inputs:a,newSettings:o}=this._setInputs(i,r);a.unshift({nameRender:`renderObjectID`,attr:`oid`,defaultValue:``,checkReadOnly:!0}),this.setState({inputs:a},()=>super.onTagChange(null,()=>{if(o){let e=JSON.parse(JSON.stringify(this.state.settings));Object.assign(e,o),this.setState(e),this.props.onChange(e)}}))}onValueChanged(e,t){this.onTagChange(void 0,void 0,void 0,t===`toggle`?e:void 0,t===`useTrigger`?e:void 0)}onUpdate(){this.onTagChange()}withUnit(e){let{oidUnit:t,oidType:n,oidStates:r,oidRole:i}=this.state.settings;return!t||r||n===`boolean`||i!=null&&i.includes(`color`)?e:`${e} ${t}`}getSummary(){let{oid:e,value:t,toggle:n,useTrigger:r,tagCard:i}=this.state.settings;if(!e)return null;let a=this.objectName(e),o;return o=r?h.t(`Trigger value`):n?h.t(`toggle`):t===void 0||t===``?`…`:this.withUnit(String(t)),{kicker:i?h.t(i):void 0,title:`${a||e} ← ${o}`,subtitle:a?e:void 0}}static getStaticData(){return{acceptedBy:`actions`,name:`Set state action`,id:`ActionSetState`,icon:`PlayForWork`,tagCardArray:[`control`,`update`],title:`Control or update some state`,helpDialog:`You can use %s in the value to use the current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},De=class e extends Z{static compile(e,t){let n=e.value;e.useTrigger?n=e.toggle?`!obj.state.val`:`obj.state.val`:(n??=``,typeof e.value==`string`&&parseFloat(e.value).toString()!==e.value&&e.value!==`true`&&e.value!==`false`&&(n=`${JSON.stringify(n)}${A.getReplacesInText(t)}`));let r=e.toggle&&!e.useTrigger?`const subActionVar${e._id} = !(await getStateAsync(${JSON.stringify(e.oid)})).val`:`const subActionVar${e._id} = ${n}`;return`// set state ${e.oid} to ${e.toggle&&!e.useTrigger?`toggle`:n} if changed
88
88
  \t\t${r};
89
89
  \t\t_sendToFrontEnd(${e._id}, {val: subActionVar${e._id}, ack: ${e.tagCard===`update`}});
90
- \t\tawait setStateChangedAsync(${JSON.stringify(e.oid)}, subActionVar${e._id}, ${e.tagCard===`update`});`}getSummary(){let e=super.getSummary();return e?{...e,subtitle:[e.subtitle,_.t(`only if changed`)].filter(Boolean).join(` · `)}:null}static getStaticData(){return{acceptedBy:`actions`,name:`Set state if changed`,id:`ActionSetStateChanged`,icon:`PublishedWithChanges`,tagCardArray:[`control`,`update`],title:`Writes a state only if its value differs from the current one`,helpDialog:`Use this instead of "Set state action" for rules that run often: an unchanged value is not written at all, so nothing subscribed to that state is woken up for nothing.`}}getData(){return e.getStaticData()}},Oe=class e extends A{constructor(t){super(t,e.getStaticData())}static literal(e){if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=e??``;return parseFloat(t).toString()===t||t===`true`||t===`false`?t:JSON.stringify(t)}static compile(t){if(!t.oid)return`// no object selected
90
+ \t\tawait setStateChangedAsync(${JSON.stringify(e.oid)}, subActionVar${e._id}, ${e.tagCard===`update`});`}getSummary(){let e=super.getSummary();return e?{...e,subtitle:[e.subtitle,h.t(`only if changed`)].filter(Boolean).join(` · `)}:null}static getStaticData(){return{acceptedBy:`actions`,name:`Set state if changed`,id:`ActionSetStateChanged`,icon:`PublishedWithChanges`,tagCardArray:[`control`,`update`],title:`Writes a state only if its value differs from the current one`,helpDialog:`Use this instead of "Set state action" for rules that run often: an unchanged value is not written at all, so nothing subscribed to that state is woken up for nothing.`}}getData(){return e.getStaticData()}},Oe=class e extends A{constructor(t){super(t,e.getStaticData())}static literal(e){if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=e??``;return parseFloat(t).toString()===t||t===`true`||t===`false`?t:JSON.stringify(t)}static compile(t){if(!t.oid)return`// no object selected
91
91
  _sendToFrontEnd(${t._id}, {message: 'No object selected'});`;let n=t.tagCard===`update`,r=`String((await getStateAsync(${JSON.stringify(t.oid)}))?.val) === ${JSON.stringify(String(t.value1??``))}`;return`// toggle ${`${t.oid} between ${t.value1} and ${t.value2}`.replace(/[\r\n]+/g,` `)}
92
92
  \t\tconst subActionVar${t._id} = ${r} ? ${e.literal(t.value2)} : ${e.literal(t.value1)};
93
93
  \t\t_sendToFrontEnd(${t._id}, {val: subActionVar${t._id}, ack: ${n}});
94
- \t\tawait setStateAsync(${JSON.stringify(t.oid)}, subActionVar${t._id}, ${n});`}renderDebug(e){return e.data.message||`${_.t(`Toggled:`)} ${e.data.val}`}buildInputs(){let{oidStates:e,oidUnit:t}=this.state.settings,n=e?Object.keys(e).map(t=>({value:t,title:e[t]})):void 0,r,i;if(n!=null&&n.length){let e=n[1]||n[0];r=[{nameRender:`renderSelect`,attr:`value1`,frontText:`between`,options:n,defaultValue:n[0].value},{nameRender:`renderSelect`,attr:`value2`,frontText:`and`,options:n,defaultValue:e.value}];let t={},a=[n[0],e];[`value1`,`value2`].forEach((e,r)=>{let i=this.state.settings[e];i!==void 0&&!n.find(e=>e.value===String(i))&&(t[e]=a[r].value)}),Object.keys(t).length&&(i=t)}else r=[{nameRender:`renderText`,attr:`value1`,frontText:`between`,backText:t||``,doNotTranslateBack:!0,defaultValue:``},{nameRender:`renderText`,attr:`value2`,frontText:`and`,backText:t||``,doNotTranslateBack:!0,defaultValue:``}];return r.unshift({nameRender:`renderObjectID`,attr:`oid`,defaultValue:``,checkReadOnly:!0}),{inputs:r,newSettings:i}}onTagChange(e,t){let{inputs:n,newSettings:r}=this.buildInputs();this.setState({inputs:n},()=>super.onTagChange(null,()=>{if(r){let e={...this.state.settings,...r};this.setState({settings:e}),this.props.onChange(e)}t==null||t()}))}onValueChanged(e,t){t===`oid`&&this.onTagChange()}getSummary(){let{oid:e,value1:t,value2:n,tagCard:r}=this.state.settings;if(!e)return null;let i=this.objectName(e),a=e=>e===void 0||e===``?`…`:String(e);return{kicker:r?_.t(r):void 0,title:`${i||e}: ${a(t)} ⇄ ${a(n)}`,subtitle:i?e:void 0}}static getStaticData(){return{acceptedBy:`actions`,name:`Toggle between two values`,id:`ActionToggleState`,icon:`SwapHoriz`,tagCardArray:[`control`,`update`],title:`Switches a state back and forth between two values`,helpDialog:`If the state does not hold the first value, the first one is written - so the rule always ends up on a defined value. To invert a boolean, use the "toggle value" checkbox of the "Set state action" instead.`}}getData(){return e.getStaticData()}},ke=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return`// exec "${e.exec}"
94
+ \t\tawait setStateAsync(${JSON.stringify(t.oid)}, subActionVar${t._id}, ${n});`}renderDebug(e){return e.data.message||`${h.t(`Toggled:`)} ${e.data.val}`}buildInputs(){let{oidStates:e,oidUnit:t}=this.state.settings,n=e?Object.keys(e).map(t=>({value:t,title:e[t]})):void 0,r,i;if(n!=null&&n.length){let e=n[1]||n[0];r=[{nameRender:`renderSelect`,attr:`value1`,frontText:`between`,options:n,defaultValue:n[0].value},{nameRender:`renderSelect`,attr:`value2`,frontText:`and`,options:n,defaultValue:e.value}];let t={},a=[n[0],e];[`value1`,`value2`].forEach((e,r)=>{let i=this.state.settings[e];i!==void 0&&!n.find(e=>e.value===String(i))&&(t[e]=a[r].value)}),Object.keys(t).length&&(i=t)}else r=[{nameRender:`renderText`,attr:`value1`,frontText:`between`,backText:t||``,doNotTranslateBack:!0,defaultValue:``},{nameRender:`renderText`,attr:`value2`,frontText:`and`,backText:t||``,doNotTranslateBack:!0,defaultValue:``}];return r.unshift({nameRender:`renderObjectID`,attr:`oid`,defaultValue:``,checkReadOnly:!0}),{inputs:r,newSettings:i}}onTagChange(e,t){let{inputs:n,newSettings:r}=this.buildInputs();this.setState({inputs:n},()=>super.onTagChange(null,()=>{if(r){let e={...this.state.settings,...r};this.setState({settings:e}),this.props.onChange(e)}t==null||t()}))}onValueChanged(e,t){t===`oid`&&this.onTagChange()}getSummary(){let{oid:e,value1:t,value2:n,tagCard:r}=this.state.settings;if(!e)return null;let i=this.objectName(e),a=e=>e===void 0||e===``?`…`:String(e);return{kicker:r?h.t(r):void 0,title:`${i||e}: ${a(t)} ⇄ ${a(n)}`,subtitle:i?e:void 0}}static getStaticData(){return{acceptedBy:`actions`,name:`Toggle between two values`,id:`ActionToggleState`,icon:`SwapHoriz`,tagCardArray:[`control`,`update`],title:`Switches a state back and forth between two values`,helpDialog:`If the state does not hold the first value, the first one is written - so the rule always ends up on a defined value. To invert a boolean, use the "toggle value" checkbox of the "Set state action" instead.`}}getData(){return e.getStaticData()}},ke=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return`// exec "${e.exec}"
95
95
  \t\tconst subActionVar${e._id} = "${(e.exec||``).replace(/"/g,`\\"`)}"${A.getReplacesInText(t)};
96
96
  \t\t_sendToFrontEnd(${e._id}, {exec: subActionVar${e._id}});
97
97
  \t\tconsole.log(subActionVar${e._id});`}renderDebug(e){return`Exec: ${e.data.exec}`}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`exec`,defaultValue:`ls /opt/iobroker`,nameBlock:`Shell command`}]},()=>super.onTagChange(e))}getSummary(){let{exec:e}=this.state.settings;return e?{title:String(e)}:null}static getStaticData(){return{acceptedBy:`actions`,name:`Exec`,id:`ActionExec`,icon:`Apps`,title:`Executes some shell command`,helpDialog:`You can use %s in the command to use current trigger value or %id to use the triggered object ID`}}getData(){return e.getStaticData()}},Ae=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return`// HTTP request ${(e.url||``).replace(/[\r\n]+/g,` `)}
98
98
  \t\tconst subActionVar${e._id} = ${JSON.stringify(e.url||``)}${A.getReplacesInText(t)};
99
99
  \t\t_sendToFrontEnd(${e._id}, {url: subActionVar${e._id}});
100
100
  \t\thttpGet(subActionVar${e._id}, (error, response) =>
101
- \t\t\t_sendToFrontEnd(${e._id}, {url: subActionVar${e._id}, statusCode: response.statusCode, error: error ? error.message : undefined}));`}renderDebug(e){let{url:t,statusCode:n,error:r}=e.data;return r?`${_.t(`HTTP error:`)} ${r}`:n===void 0?`URL: ${t}`:`URL: ${t} → ${n}`}getSummary(){let{url:e}=this.state.settings;return e?{title:String(e)}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`url`,defaultValue:`http://mydevice.com?...`,nameBlock:`URL`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`actions`,name:`HTTP Call`,id:`ActionHTTPCall`,icon:`Language`,title:`Make a HTTP get request`,helpDialog:`You can use %s in the URL to use current trigger value or %id to use the triggered object ID`}}getData(){return e.getStaticData()}},je=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return`// Log ${e.text}
101
+ \t\t\t_sendToFrontEnd(${e._id}, {url: subActionVar${e._id}, statusCode: response.statusCode, error: error ? error.message : undefined}));`}renderDebug(e){let{url:t,statusCode:n,error:r}=e.data;return r?`${h.t(`HTTP error:`)} ${r}`:n===void 0?`URL: ${t}`:`URL: ${t} → ${n}`}getSummary(){let{url:e}=this.state.settings;return e?{title:String(e)}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`url`,defaultValue:`http://mydevice.com?...`,nameBlock:`URL`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`actions`,name:`HTTP Call`,id:`ActionHTTPCall`,icon:`Language`,title:`Make a HTTP get request`,helpDialog:`You can use %s in the URL to use current trigger value or %id to use the triggered object ID`}}getData(){return e.getStaticData()}},je=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e,t){return`// Log ${e.text}
102
102
  \t\tconst subActionVar${e._id} = "${(e.text||``).replace(/"/g,`\\"`)}"${A.getReplacesInText(t)};
103
103
  \t\t_sendToFrontEnd(${e._id}, {text: subActionVar${e._id}});
104
- \t\tconsole.log(subActionVar${e._id});`}renderDebug(e){return _.t(`Log: %s`,e.data.text)}onTagChange(){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`text`,defaultValue:`My device triggered`,nameBlock:`Log text`}]},()=>super.onTagChange())}getSummary(){let{text:e}=this.state.settings;return e?{title:String(e)}:null}static getStaticData(){return{acceptedBy:`actions`,name:`Log text`,id:`ActionPrintText`,icon:`Subject`,title:`Print some text in log`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},Q=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e){let t=e.unit===`ms`?1:e.unit===`s`?1e3:e.unit===`m`?6e4:36e5;return`// pause for ${t}ms
104
+ \t\tconsole.log(subActionVar${e._id});`}renderDebug(e){return h.t(`Log: %s`,e.data.text)}onTagChange(){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`text`,defaultValue:`My device triggered`,nameBlock:`Log text`}]},()=>super.onTagChange())}getSummary(){let{text:e}=this.state.settings;return e?{title:String(e)}:null}static getStaticData(){return{acceptedBy:`actions`,name:`Log text`,id:`ActionPrintText`,icon:`Subject`,title:`Print some text in log`,helpDialog:`You can use %s in the text to display current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}},Q=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e){let t=e.unit===`ms`?1:e.unit===`s`?1e3:e.unit===`m`?6e4:36e5;return`// pause for ${t}ms
105
105
  \t\t_sendToFrontEnd(${e._id}, {paused: true});\n
106
106
  \t\tawait wait(${e.pause} * ${t});\n
107
- \t\t_sendToFrontEnd(${e._id}, {paused: false});`}renderDebug(e){return _.t(`Paused: %s`,e.data.paused)}_getOptions(e){return e=e===void 0?this.state.settings.pause:e,e===1||e===`1`?[{value:`ms`,title:`millisecond`},{value:`s`,title:`second`},{value:`m`,title:`minute`},{value:`h`,title:`hour`}]:[{value:`ms`,title:`milliseconds`},{value:`s`,title:`seconds`},{value:`m`,title:`minutes`},{value:`h`,title:`hours`}]}_setInputs(e){this.setState({inputs:[{nameRender:`renderNumber`,attr:`pause`,defaultValue:100,noHelperText:!0},{nameRender:`renderSelect`,attr:`unit`,defaultValue:`ms`,options:this._getOptions(e)}]},()=>super.onTagChange())}onValueChanged(e,t){t===`pause`&&this._setInputs(e)}onTagChange(){this._setInputs()}getSummary(){let{pause:e,unit:t}=this.state.settings;return e==null?null:{title:`${e} ${_.t(t||`ms`)}`}}static getStaticData(){return{acceptedBy:`actions`,name:`Pause`,id:`ActionPause`,icon:`Pause`,title:`Make a pause between actions`}}getData(){return e.getStaticData()}},Me=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e){let t=(e.func||``).split(`
107
+ \t\t_sendToFrontEnd(${e._id}, {paused: false});`}renderDebug(e){return h.t(`Paused: %s`,e.data.paused)}_getOptions(e){return e=e===void 0?this.state.settings.pause:e,e===1||e===`1`?[{value:`ms`,title:`millisecond`},{value:`s`,title:`second`},{value:`m`,title:`minute`},{value:`h`,title:`hour`}]:[{value:`ms`,title:`milliseconds`},{value:`s`,title:`seconds`},{value:`m`,title:`minutes`},{value:`h`,title:`hours`}]}_setInputs(e){this.setState({inputs:[{nameRender:`renderNumber`,attr:`pause`,defaultValue:100,noHelperText:!0},{nameRender:`renderSelect`,attr:`unit`,defaultValue:`ms`,options:this._getOptions(e)}]},()=>super.onTagChange())}onValueChanged(e,t){t===`pause`&&this._setInputs(e)}onTagChange(){this._setInputs()}getSummary(){let{pause:e,unit:t}=this.state.settings;return e==null?null:{title:`${e} ${h.t(t||`ms`)}`}}static getStaticData(){return{acceptedBy:`actions`,name:`Pause`,id:`ActionPause`,icon:`Pause`,title:`Make a pause between actions`}}getData(){return e.getStaticData()}},Me=class e extends A{constructor(t){super(t,e.getStaticData())}static compile(e){let t=(e.func||``).split(`
108
108
  `).map(e=>` ${e}`);return t.unshift(`\t\t_sendToFrontEnd(${e._id}, {func: 'executed'});`),t.unshift(`// user function`),t.join(`
109
- `)}renderDebug(){return _.t(`Function: executed`)}getSummary(){let{func:e}=this.state.settings,t=String(e||``).split(`
110
- `).map(e=>e.trim()).filter(Boolean);return t.length?{title:t.length>1?`${t[0]} …`:t[0]}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`func`,noTextEdit:!0,defaultValue:`console.log("Test")`,nameBlock:`Function`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`actions`,name:`User function`,id:`ActionFunction`,icon:`Functions`,title:`Write your own code`,helpDialog:`This is advances option. You can write your own code here and it will be executed on trigger`}}getData(){return e.getStaticData()}};r();var Ne=class e extends A{constructor(t){super(t,e.getStaticData())}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e,t){let n=e.value;e.useTrigger?n=e.toggle?`!obj.state.val`:`obj.state.val`:(n??=``,typeof e.value==`string`&&parseFloat(e.value).toString()!==e.value&&e.value!==`true`&&e.value!==`false`&&(n=`"${n.replace(/"/g,`\\"`)}"${A.getReplacesInText(t)}`));let r;return r=e.toggle&&!e.useTrigger?`const subActionVar${e._id} = !(await getStateAsync("${e.oid}")).val`:`const subActionVar${e._id} = ${n}`,`// set delayed state ${e.oid} to ${e.toggle&&!e.useTrigger?`toggle`:n} with delay of ${e.delay}ms
109
+ `)}renderDebug(){return h.t(`Function: executed`)}getSummary(){let{func:e}=this.state.settings,t=String(e||``).split(`
110
+ `).map(e=>e.trim()).filter(Boolean);return t.length?{title:t.length>1?`${t[0]} …`:t[0]}:null}onTagChange(e){this.setState({inputs:[{nameRender:`renderModalInput`,attr:`func`,noTextEdit:!0,defaultValue:`console.log("Test")`,nameBlock:`Function`}]},()=>super.onTagChange(e))}static getStaticData(){return{acceptedBy:`actions`,name:`User function`,id:`ActionFunction`,icon:`Functions`,title:`Write your own code`,helpDialog:`This is advances option. You can write your own code here and it will be executed on trigger`}}getData(){return e.getStaticData()}};o();var Ne=class e extends A{constructor(t){super(t,e.getStaticData())}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e,t){let n=e.value;e.useTrigger?n=e.toggle?`!obj.state.val`:`obj.state.val`:(n??=``,typeof e.value==`string`&&parseFloat(e.value).toString()!==e.value&&e.value!==`true`&&e.value!==`false`&&(n=`"${n.replace(/"/g,`\\"`)}"${A.getReplacesInText(t)}`));let r;return r=e.toggle&&!e.useTrigger?`const subActionVar${e._id} = !(await getStateAsync("${e.oid}")).val`:`const subActionVar${e._id} = ${n}`,`// set delayed state ${e.oid} to ${e.toggle&&!e.useTrigger?`toggle`:n} with delay of ${e.delay}ms
111
111
  \t\t${r};
112
112
  \t\t_sendToFrontEnd(${e._id}, {val: subActionVar${e._id}, ack: ${e.tagCard===`update`}});
113
- \t\tsetStateDelayed("${e.oid}", subActionVar${e._id}, ${e.tagCard===`update`}, ${parseInt(e.delay,10)}, ${e.clearRunning?`true`:`false`});`}renderDebug(e){var t,n;return g(`span`,{children:[_.t(`Set:`),` `,u(`span`,{className:e.data.ack?(t=this.props.classes)==null?void 0:t.valueAck:(n=this.props.classes)==null?void 0:n.valueNotAck,children:k(e.data.val)})]})}_setInputs(e,t){let n=this.isAllTriggersOnState();t=t===void 0?this.state.settings.toggle:t,e=e===void 0?this.state.settings.useTrigger:e;let r=``,i,{oidType:a,oidUnit:o,oidStates:s,oidMax:c,oidMin:l,oidRole:u,oidWrite:d,oidStep:f}=this.state.settings,p;a&&(a===`number`?(r=`number`,c!==void 0&&l!==void 0&&(r=`slider`)):a===`boolean`?(r=`boolean`,u&&u.includes(`button`)&&d&&(r=`button`)):(r=``,u&&u.includes(`color`)&&(r=`color`)),s&&(i=Object.keys(s).map(e=>({value:e,title:s[e]})),r=`select`));let m;if(n&&e)m=[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`,defaultValue:!1}],r===`boolean`&&m.push({backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1});else{switch(r){case`number`:m=[{backText:o||``,frontText:`with`,nameRender:`renderNumber`,defaultValue:c===void 0?0:c,attr:`value`}],this.state.settings.value!==void 0&&isNaN(parseFloat(this.state.settings.value))&&(p={value:c===void 0?0:c});break;case`slider`:{m=[{nameRender:`renderSlider`,defaultValue:c,min:l,max:c,unit:o,step:f,attr:`value`}];let e=parseFloat(this.state.settings.value);this.state.settings.value!==void 0&&(isNaN(e)||e<l||e>c?p={value:c}:typeof this.state.settings.value!=`number`&&(p={value:e}));break}case`select`:m=[{nameRender:`renderSelect`,frontText:`with`,options:i,defaultValue:(i==null?void 0:i[0].value)||``,attr:`value`}],this.state.settings.value!==void 0&&!(i!=null&&i.find(e=>e.value===this.state.settings.value))&&(p={value:(i==null?void 0:i[0].value)||``});break;case`boolean`:m=[{backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1}],t||m.push({backText:`true`,frontText:`false`,nameRender:`renderSwitch`,defaultValue:!1,attr:`value`}),this.state.settings.value!==void 0&&this.state.settings.value!==!1&&this.state.settings.value!==!0&&(p={value:!1});break;case`button`:m=[{nameRender:`renderButton`,defaultValue:!0,attr:`value`}],this.state.settings.value!==void 0&&this.state.settings.value!==!0&&(p={value:!0});break;case`color`:m=[{nameRender:`renderColor`,frontText:`with`,defaultValue:`#FFFFFF`,attr:`value`}],this.state.settings.value!==void 0&&(typeof this.state.settings.value!=`string`||!this.state.settings.value.startsWith(`#`)&&!this.state.settings.value.startsWith(`rgb`))&&(p={value:`#FFFFFF`});break;default:m=[{backText:o||``,frontText:`with`,nameRender:`renderText`,defaultValue:``,attr:`value`}]}n&&m.unshift({backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`})}return m.push({backText:`ms`,frontText:`Delay`,nameRender:`renderNumber`,defaultValue:1e3,noHelperText:!0,attr:`delay`}),m.push({backText:`clear running`,nameRender:`renderCheckbox`,defaultValue:!0,attr:`clearRunning`}),{inputs:m,newSettings:p}}onTagChange(e,t,n,r,i){i=i===void 0?this.state.settings.useTrigger:i;let{inputs:a,newSettings:o}=this._setInputs(i,r);a.unshift({nameRender:`renderObjectID`,attr:`oid`,defaultValue:``,checkReadOnly:!0}),this.setState({inputs:a},()=>super.onTagChange(null,()=>{if(o){let e=JSON.parse(JSON.stringify(this.state.settings));Object.assign(e,o),this.setState(e),this.props.onChange(e)}}))}onValueChanged(e,t){this.onTagChange(void 0,void 0,void 0,t===`toggle`?e:void 0,t===`useTrigger`?e:void 0)}onUpdate(){this.onTagChange()}getSummary(){let{oid:e,value:t,toggle:n,useTrigger:r,tagCard:i,delay:a}=this.state.settings;if(!e)return null;let o=this.objectName(e),s;s=r?_.t(`Trigger value`):n?_.t(`toggle`):t===void 0||t===``?`…`:String(t);let c=[];return i&&c.push(_.t(i)),a&&c.push(`${a} ms`),{kicker:c.length?c.join(` · `):void 0,title:`${o||e} ← ${s}`,subtitle:o?e:void 0}}static getStaticData(){return{acceptedBy:`actions`,name:`Set with delay`,id:`ActionSetStateDelayed`,icon:`PlayForWork`,tagCardArray:[`control`,`update`],title:`Control or update some state with delay`,helpDialog:`You can use %s in the value to use the current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}};r();var Pe=[ue,se,de,fe,pe,me,he,ge,_e,ye,be,xe,Se,Ce,Z,De,Oe,we,Ee,ke,Ae,je,Te,Q,Me,Ne,class e extends A{constructor(t){super(t,e.getStaticData())}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e){let t=`const val2_${e._id} = (await getStateAsync("${e.oid1}")).val;`,n=`const val1_${e._id} = (await getStateAsync("${e.oid2}")).val;`;return`// ${e.oid1} ${e.operation} ${e.oid2} => ${e.oidResult}
113
+ \t\tsetStateDelayed("${e.oid}", subActionVar${e._id}, ${e.tagCard===`update`}, ${parseInt(e.delay,10)}, ${e.clearRunning?`true`:`false`});`}renderDebug(e){var t,n;return x(`span`,{children:[h.t(`Set:`),` `,m(`span`,{className:e.data.ack?(t=this.props.classes)==null?void 0:t.valueAck:(n=this.props.classes)==null?void 0:n.valueNotAck,children:k(e.data.val)})]})}_setInputs(e,t){let n=this.isAllTriggersOnState();t=t===void 0?this.state.settings.toggle:t,e=e===void 0?this.state.settings.useTrigger:e;let r=``,i,{oidType:a,oidUnit:o,oidStates:s,oidMax:c,oidMin:l,oidRole:u,oidWrite:d,oidStep:f}=this.state.settings,p;a&&(a===`number`?(r=`number`,c!==void 0&&l!==void 0&&(r=`slider`)):a===`boolean`?(r=`boolean`,u&&u.includes(`button`)&&d&&(r=`button`)):(r=``,u&&u.includes(`color`)&&(r=`color`)),s&&(i=Object.keys(s).map(e=>({value:e,title:s[e]})),r=`select`));let m;if(n&&e)m=[{backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`,defaultValue:!1}],r===`boolean`&&m.push({backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1});else{switch(r){case`number`:m=[{backText:o||``,frontText:`with`,nameRender:`renderNumber`,defaultValue:c===void 0?0:c,attr:`value`}],this.state.settings.value!==void 0&&isNaN(parseFloat(this.state.settings.value))&&(p={value:c===void 0?0:c});break;case`slider`:{m=[{nameRender:`renderSlider`,defaultValue:c,min:l,max:c,unit:o,step:f,attr:`value`}];let e=parseFloat(this.state.settings.value);this.state.settings.value!==void 0&&(isNaN(e)||e<l||e>c?p={value:c}:typeof this.state.settings.value!=`number`&&(p={value:e}));break}case`select`:m=[{nameRender:`renderSelect`,frontText:`with`,options:i,defaultValue:(i==null?void 0:i[0].value)||``,attr:`value`}],this.state.settings.value!==void 0&&!(i!=null&&i.find(e=>e.value===this.state.settings.value))&&(p={value:(i==null?void 0:i[0].value)||``});break;case`boolean`:m=[{backText:`toggle value`,attr:`toggle`,nameRender:`renderCheckbox`,defaultValue:!1}],t||m.push({backText:`true`,frontText:`false`,nameRender:`renderSwitch`,defaultValue:!1,attr:`value`}),this.state.settings.value!==void 0&&this.state.settings.value!==!1&&this.state.settings.value!==!0&&(p={value:!1});break;case`button`:m=[{nameRender:`renderButton`,defaultValue:!0,attr:`value`}],this.state.settings.value!==void 0&&this.state.settings.value!==!0&&(p={value:!0});break;case`color`:m=[{nameRender:`renderColor`,frontText:`with`,defaultValue:`#FFFFFF`,attr:`value`}],this.state.settings.value!==void 0&&(typeof this.state.settings.value!=`string`||!this.state.settings.value.startsWith(`#`)&&!this.state.settings.value.startsWith(`rgb`))&&(p={value:`#FFFFFF`});break;default:m=[{backText:o||``,frontText:`with`,nameRender:`renderText`,defaultValue:``,attr:`value`}]}n&&m.unshift({backText:`use trigger value`,nameRender:`renderCheckbox`,attr:`useTrigger`})}return m.push({backText:`ms`,frontText:`Delay`,nameRender:`renderNumber`,defaultValue:1e3,noHelperText:!0,attr:`delay`}),m.push({backText:`clear running`,nameRender:`renderCheckbox`,defaultValue:!0,attr:`clearRunning`}),{inputs:m,newSettings:p}}onTagChange(e,t,n,r,i){i=i===void 0?this.state.settings.useTrigger:i;let{inputs:a,newSettings:o}=this._setInputs(i,r);a.unshift({nameRender:`renderObjectID`,attr:`oid`,defaultValue:``,checkReadOnly:!0}),this.setState({inputs:a},()=>super.onTagChange(null,()=>{if(o){let e=JSON.parse(JSON.stringify(this.state.settings));Object.assign(e,o),this.setState(e),this.props.onChange(e)}}))}onValueChanged(e,t){this.onTagChange(void 0,void 0,void 0,t===`toggle`?e:void 0,t===`useTrigger`?e:void 0)}onUpdate(){this.onTagChange()}getSummary(){let{oid:e,value:t,toggle:n,useTrigger:r,tagCard:i,delay:a}=this.state.settings;if(!e)return null;let o=this.objectName(e),s;s=r?h.t(`Trigger value`):n?h.t(`toggle`):t===void 0||t===``?`…`:String(t);let c=[];return i&&c.push(h.t(i)),a&&c.push(`${a} ms`),{kicker:c.length?c.join(` · `):void 0,title:`${o||e} ← ${s}`,subtitle:o?e:void 0}}static getStaticData(){return{acceptedBy:`actions`,name:`Set with delay`,id:`ActionSetStateDelayed`,icon:`PlayForWork`,tagCardArray:[`control`,`update`],title:`Control or update some state with delay`,helpDialog:`You can use %s in the value to use the current trigger value or %id to display the triggered object ID`}}getData(){return e.getStaticData()}};o();var Pe=[ue,se,de,fe,pe,me,he,ge,_e,ye,be,xe,Se,Ce,Z,De,Oe,we,Ee,ke,Ae,je,Te,Q,Me,Ne,class e extends A{constructor(t){super(t,e.getStaticData())}isAllTriggersOnState(){var e,t;return!!((e=this.props.userRules)!=null&&(e=e.triggers)!=null&&e.find(e=>e.id===`TriggerState`))&&!((t=this.props.userRules)!=null&&(t=t.triggers)!=null&&t.find(e=>e.id!==`TriggerState`))}static compile(e){let t=`const val2_${e._id} = (await getStateAsync("${e.oid1}")).val;`,n=`const val1_${e._id} = (await getStateAsync("${e.oid2}")).val;`;return`// ${e.oid1} ${e.operation} ${e.oid2} => ${e.oidResult}
114
114
  \t\t ${t}
115
115
  \t\t ${n}
116
116
  \t\t_sendToFrontEnd(${e._id}, {val: val1_${e._id} ${e.operation} val2_${e._id}, ack: ${e.tagCard===`update`}});
117
- \t\tawait setStateAsync("${e.oidResult}", val1_${e._id} ${e.operation} val2_${e._id}, ${e.tagCard===`update`});`}renderDebug(e){var t,n;return g(`span`,{children:[_.t(`Set:`),` `,u(`span`,{className:e.data.ack?(t=this.props.classes)==null?void 0:t.valueAck:(n=this.props.classes)==null?void 0:n.valueNotAck,children:k(e.data.val)})]})}getSummary(){let{oid1:e,oid2:t,operation:n,oidResult:r,tagCard:i}=this.state.settings;if(!e||!t||!r)return null;let a=this.objectName(e)||e,o=this.objectName(t)||t,s=this.objectName(r)||r;return{kicker:i?_.t(i):void 0,title:`${s} ← ${a} ${n||`+`} ${o}`,subtitle:r}}onTagChange(){let e=[];e.push({nameRender:`renderObjectID`,title:`ID1`,attr:`oid1`,defaultValue:``,checkReadOnly:!1}),e.push({nameRender:`renderSelect`,options:[{value:`+`,title:`+`},{value:`-`,title:`-`},{value:`*`,title:`*`},{value:`/`,title:`/`}],doNotTranslate:!0,defaultValue:`+`,attr:`operation`}),e.push({nameRender:`renderObjectID`,title:`ID2`,attr:`oid2`,defaultValue:``,checkReadOnly:!1}),e.push({nameRender:`renderNameText`,defaultValue:`store in`,attr:`textEqual`}),e.push({nameRender:`renderObjectID`,attr:`oidResult`,defaultValue:``,checkReadOnly:!0}),this.setState({inputs:e},()=>super.onTagChange(null,()=>{let e=JSON.parse(JSON.stringify(this.state.settings));this.props.onChange(e)}))}onValueChanged(e,t){this.onTagChange()}onUpdate(){this.onTagChange()}static getStaticData(){return{acceptedBy:`actions`,name:`Operate two states`,id:`ActionOperateStates`,icon:`AddBox`,tagCardArray:[`control`,`update`],title:`Operations with two states`}}getData(){return e.getStaticData()}}];window.GenericBlock=A;var $={sayit:re,pushover:ie,"whatsapp-cmb":ae,pushsafer:oe};async function Fe(e){let t=await e.getAdapterInstances(),n=Object.keys($).filter(e=>t.find(t=>{var n;return(t==null||(n=t.common)==null?void 0:n.name)===e})),r=[],i=t.filter(e=>e.common.javascriptRules),a=[];for(let e of i){if(a.includes(e.common.name)||!e.common.javascriptRules)continue;let t;if(t=e.common.javascriptRules.url.startsWith(`http:`)||e.common.javascriptRules.url.startsWith(`https:`)?e.common.javascriptRules.url:e.common.javascriptRules.url.startsWith(`./`)?`${window.location.protocol}//${window.location.host}${e.common.javascriptRules.url.replace(/^\./,``)}`:`${window.location.protocol}//${window.location.host}/adapter/${e.common.name}/${e.common.javascriptRules.url}`,e.common.javascriptRules.i18n===!0){let e=t.lastIndexOf(`/`),n;n=e===-1?t:t.substring(0,e);let r=_.getLanguage(),i=`${n}/i18n/${r}.json`;await fetch(i).then(e=>e.json()).then(e=>_.extendTranslations(e,r)).catch(e=>{if(r!==`en`)return fetch(`${n}/i18n/en.json`).then(e=>e.json()).then(e=>_.extendTranslations(e,r)).catch(e=>console.error(`Cannot load i18n "${i}": ${e}`));console.log(`Cannot load i18n "${i}": ${e}`)})}else if(e.common.javascriptRules.i18n&&typeof e.common.javascriptRules.i18n==`object`)try{_.extendTranslations(e.common.javascriptRules.i18n)}catch(t){console.error(`Cannot import i18n for "${e.common.javascriptRules.name}": ${t}`)}try{ne([{name:e.common.javascriptRules.name,entry:t,type:e.common.javascriptRules.type}]);let n=(await z(`${e.common.javascriptRules.name}/${e.common.javascriptRules.name}`)).default;n&&(r.push(n),a.push(e.common.name),$[e.common.name]=null)}catch(t){console.error(`Cannot load component "${e.common.javascriptRules.name}": ${t}`)}}let o=n.filter(e=>$[e]).map(e=>$[e]);return[...Pe,...o,...r]}export{Fe as default};
117
+ \t\tawait setStateAsync("${e.oidResult}", val1_${e._id} ${e.operation} val2_${e._id}, ${e.tagCard===`update`});`}renderDebug(e){var t,n;return x(`span`,{children:[h.t(`Set:`),` `,m(`span`,{className:e.data.ack?(t=this.props.classes)==null?void 0:t.valueAck:(n=this.props.classes)==null?void 0:n.valueNotAck,children:k(e.data.val)})]})}getSummary(){let{oid1:e,oid2:t,operation:n,oidResult:r,tagCard:i}=this.state.settings;if(!e||!t||!r)return null;let a=this.objectName(e)||e,o=this.objectName(t)||t,s=this.objectName(r)||r;return{kicker:i?h.t(i):void 0,title:`${s} ← ${a} ${n||`+`} ${o}`,subtitle:r}}onTagChange(){let e=[];e.push({nameRender:`renderObjectID`,title:`ID1`,attr:`oid1`,defaultValue:``,checkReadOnly:!1}),e.push({nameRender:`renderSelect`,options:[{value:`+`,title:`+`},{value:`-`,title:`-`},{value:`*`,title:`*`},{value:`/`,title:`/`}],doNotTranslate:!0,defaultValue:`+`,attr:`operation`}),e.push({nameRender:`renderObjectID`,title:`ID2`,attr:`oid2`,defaultValue:``,checkReadOnly:!1}),e.push({nameRender:`renderNameText`,defaultValue:`store in`,attr:`textEqual`}),e.push({nameRender:`renderObjectID`,attr:`oidResult`,defaultValue:``,checkReadOnly:!0}),this.setState({inputs:e},()=>super.onTagChange(null,()=>{let e=JSON.parse(JSON.stringify(this.state.settings));this.props.onChange(e)}))}onValueChanged(e,t){this.onTagChange()}onUpdate(){this.onTagChange()}static getStaticData(){return{acceptedBy:`actions`,name:`Operate two states`,id:`ActionOperateStates`,icon:`AddBox`,tagCardArray:[`control`,`update`],title:`Operations with two states`}}getData(){return e.getStaticData()}}];window.GenericBlock=A;var $={sayit:re,pushover:ie,"whatsapp-cmb":ae,pushsafer:oe};async function Fe(e){let t=await e.getAdapterInstances(),n=Object.keys($).filter(e=>t.find(t=>{var n;return(t==null||(n=t.common)==null?void 0:n.name)===e})),r=[],i=t.filter(e=>e.common.javascriptRules),a=[];for(let e of i){if(a.includes(e.common.name)||!e.common.javascriptRules)continue;let t;if(t=e.common.javascriptRules.url.startsWith(`http:`)||e.common.javascriptRules.url.startsWith(`https:`)?e.common.javascriptRules.url:e.common.javascriptRules.url.startsWith(`./`)?`${window.location.protocol}//${window.location.host}${e.common.javascriptRules.url.replace(/^\./,``)}`:`${window.location.protocol}//${window.location.host}/adapter/${e.common.name}/${e.common.javascriptRules.url}`,e.common.javascriptRules.i18n===!0){let e=t.lastIndexOf(`/`),n;n=e===-1?t:t.substring(0,e);let r=h.getLanguage(),i=`${n}/i18n/${r}.json`;await fetch(i).then(e=>e.json()).then(e=>h.extendTranslations(e,r)).catch(e=>{if(r!==`en`)return fetch(`${n}/i18n/en.json`).then(e=>e.json()).then(e=>h.extendTranslations(e,r)).catch(e=>console.error(`Cannot load i18n "${i}": ${e}`));console.log(`Cannot load i18n "${i}": ${e}`)})}else if(e.common.javascriptRules.i18n&&typeof e.common.javascriptRules.i18n==`object`)try{h.extendTranslations(e.common.javascriptRules.i18n)}catch(t){console.error(`Cannot import i18n for "${e.common.javascriptRules.name}": ${t}`)}try{ne([{name:e.common.javascriptRules.name,entry:t,type:e.common.javascriptRules.type}]);let n=(await z(`${e.common.javascriptRules.name}/${e.common.javascriptRules.name}`)).default;n&&(r.push(n),a.push(e.common.name),$[e.common.name]=null)}catch(t){console.error(`Cannot load component "${e.common.javascriptRules.name}": ${t}`)}}let o=n.filter(e=>$[e]).map(e=>$[e]);return[...Pe,...o,...r]}export{Fe as default};