iobroker.javascript 9.1.1 → 9.2.1

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 (91) hide show
  1. package/README.md +32 -16
  2. package/admin/assets/AiChatPanel-Cc1KscBJ.js +315 -0
  3. package/admin/assets/AiDatapointProvider-B0i3I5Fm.js +2 -0
  4. package/admin/assets/AiDiffView-RPozjjHf.js +1 -0
  5. package/admin/assets/AiInlineProvider-DkgjVSFQ.js +7 -0
  6. package/admin/assets/{Save-Cld9qv9i.js → Save-CkuNSiWL.js} +1 -1
  7. package/admin/assets/ScriptEditor-6qrtvwPL.js +2 -0
  8. package/admin/assets/ScriptEditorVanillaMonaco-bJua4sm1.js +3 -0
  9. package/admin/assets/applyCodeEdit-BdRnbz2g.js +1 -0
  10. package/admin/assets/{createSvgIcon-DPvF8xqu.js → createSvgIcon-DYs_tNrE.js} +1 -1
  11. package/admin/assets/docs-compact-CKNGiYh2.js +336 -0
  12. package/admin/assets/{index-BVPl8hv0.js → index-BZxCaQhO.js} +5 -5
  13. package/admin/assets/index-CYbVtccs.js +1267 -0
  14. package/admin/assets/index-CexrwGGC.js +986 -0
  15. package/admin/assets/{index-DFZipply.js → index-DsW7vBcg.js} +1 -1
  16. package/admin/assets/index-SHs7_wDh.js +1 -0
  17. package/admin/assets/{index-DlDUIfpA.js → index-dN73sbyQ.js} +1 -1
  18. package/admin/assets/index-wHNMOf-c.js +5 -0
  19. package/admin/assets/inheritsLoose-CIXm_zPk.js +29 -0
  20. package/admin/assets/inlineChatWidget-Cu6rb4Ar.js +2 -0
  21. package/admin/assets/inlineDiffController-DBLpPOe2.js +16 -0
  22. package/admin/assets/{iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js → iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js} +1 -1
  23. package/admin/assets/{localSharedImportMap-xmSu9Qkg.js → localSharedImportMap-BCwqnmn4.js} +1 -1
  24. package/admin/assets/stateHoverProvider-CGChzV5W.js +3 -0
  25. package/admin/assets/useTheme-DuTJsNQ-.js +1 -0
  26. package/admin/assets/{virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-D-eF6r8M.js → virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-DNrEsMrg.js} +2 -2
  27. package/admin/custom/assets/{Components-B8x6wOMD.js → Components-B9ZyjeRI.js} +1 -1
  28. package/admin/custom/assets/{index-N2n19KrF.js → index-DNKzDki_.js} +152 -152
  29. package/admin/custom/assets/{index-DbXK0odl.js → index-NItS-TWp.js} +1 -1
  30. package/admin/custom/assets/index-sozs10Ij.js +960 -0
  31. package/admin/custom/assets/{localSharedImportMap-2Enh8EZe.js → localSharedImportMap-BxT0VwTO.js} +1 -1
  32. package/admin/custom/assets/{virtualExposes-CqrW7o8v.js → virtualExposes-jSvr-kK3.js} +1 -1
  33. package/admin/custom/assets/{virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BZZsMeVW.js → virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-Br3IlnqO.js} +2 -2
  34. package/admin/custom/customComponents.js +1 -1
  35. package/admin/google-blockly/own/blocks_words.js +7 -0
  36. package/admin/google-blockly/own/field_oid.js +311 -37
  37. package/admin/i18n/de.json +8 -0
  38. package/admin/i18n/en.json +8 -0
  39. package/admin/i18n/es.json +8 -0
  40. package/admin/i18n/flat.txt +427 -0
  41. package/admin/i18n/fr.json +8 -0
  42. package/admin/i18n/it.json +8 -0
  43. package/admin/i18n/nl.json +8 -0
  44. package/admin/i18n/pl.json +8 -0
  45. package/admin/i18n/pt.json +8 -0
  46. package/admin/i18n/ru.json +8 -0
  47. package/admin/i18n/uk.json +8 -0
  48. package/admin/i18n/zh-cn.json +8 -0
  49. package/admin/img/anthropic.svg +1 -0
  50. package/admin/img/custom.svg +1 -0
  51. package/admin/img/deepseek.svg +1 -0
  52. package/admin/img/gemini.svg +1 -0
  53. package/admin/img/openai.svg +1 -0
  54. package/admin/jsonConfig.json +80 -18
  55. package/admin/mf-manifest.json +1 -1
  56. package/admin/remoteEntry.js +1 -1
  57. package/admin/tab.html +6 -6
  58. package/build/lib/aiProviderResolver.js +80 -0
  59. package/build/lib/aiProviderResolver.js.map +1 -0
  60. package/build/lib/anthropicAdapter.js +175 -0
  61. package/build/lib/anthropicAdapter.js.map +1 -0
  62. package/build/lib/debugger.js +2 -2
  63. package/build/lib/debugger.js.map +1 -1
  64. package/build/lib/inspect.js.map +1 -1
  65. package/build/lib/nodeModulesManagement.js +2 -2
  66. package/build/lib/nodeModulesManagement.js.map +1 -1
  67. package/build/lib/protectFs.js +5 -0
  68. package/build/lib/protectFs.js.map +1 -1
  69. package/build/lib/sandbox.js +9 -4
  70. package/build/lib/sandbox.js.map +1 -1
  71. package/build/main.js +190 -101
  72. package/build/main.js.map +1 -1
  73. package/build/types.d.ts +3 -0
  74. package/docs/de/README.md +81 -10
  75. package/docs/de/blockly.md +34 -0
  76. package/docs/en/README.md +81 -10
  77. package/docs/en/blockly.md +34 -0
  78. package/install/installTypings.js +1 -1
  79. package/io-package.json +82 -54
  80. package/package.json +7 -6
  81. package/admin/assets/OpenAiDialog-rhLuRLIM.js +0 -13
  82. package/admin/assets/ScriptEditor-C-fO5h68.js +0 -2
  83. package/admin/assets/ScriptEditorVanillaMonaco-DSYvOslZ.js +0 -1
  84. package/admin/assets/docs-BrInh2Pn.js +0 -2036
  85. package/admin/assets/index-C49cpVll.js +0 -5
  86. package/admin/assets/index-XSrHkgLE.js +0 -1230
  87. package/admin/assets/index-gIA8x-8f.js +0 -1
  88. package/admin/assets/index-q6iFaoFb.js +0 -986
  89. package/admin/assets/inheritsLoose-B0Ba5G9z.js +0 -29
  90. package/admin/assets/useTheme-hy6f3gra.js +0 -1
  91. package/admin/custom/assets/index-CYc31Gwg.js +0 -960
@@ -1,13 +0,0 @@
1
- import{c as ie,j as n}from"./createSvgIcon-DPvF8xqu.js";import{j as S,b as H,k as J,c as re}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as F,a as Q,b as Z,i as $,h as X,c as oe,$ as ae,d as ce,e as le,f as de,g as ee}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js";import{_ as l}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import{_ as me}from"./preload-helper-BDBacUwf.js";import{C as he,b as ue,R as fe}from"./index-gIA8x-8f.js";import pe from"./ScriptEditorVanillaMonaco-DSYvOslZ.js";import{c as te,I as ge}from"./index-C49cpVll.js";import{h as ye}from"./index-XSrHkgLE.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";import"./virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-D-eF6r8M.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js";import"./iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js";import"./inheritsLoose-B0Ba5G9z.js";const ve=ie(n.jsx("path",{d:"M11.07 12.85c.77-1.39 2.25-2.21 3.11-3.44.91-1.29.4-3.7-2.18-3.7-1.69 0-2.52 1.28-2.87 2.34L6.54 6.96C7.25 4.83 9.18 3 11.99 3c2.35 0 3.96 1.07 4.78 2.41.7 1.15 1.11 3.3.03 4.9-1.2 1.77-2.35 2.31-2.97 3.45-.25.46-.35.76-.35 2.24h-2.89c-.01-.78-.13-2.05.48-3.15M14 20c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2"}),"QuestionMark"),je=me(()=>import("./docs-BrInh2Pn.js"),[],import.meta.url);let G=null;async function xe(s){if(G)return G;const f=await s.getObjectViewSystem("state","","香"),r=await s.getObjectViewSystem("channel","","香"),v=await s.getObjectViewSystem("device","","香"),d=await s.getObjectViewSystem("folder","","香"),k=await s.getObjectViewSystem("enum","","香");return G=Object.assign(f,r,v,d,k),G}function V(s,f){return s&&typeof s=="object"?s[f]||s.en:s||""}async function Ie(s){var P,N,L,K;const f=l.I18n.getLanguage(),r=await xe(s),v=Object.keys(r).sort(),d=new he,k=[],A=["UNREACH_STICKY"],W=[ue.Types.info],_=[],b=[],R=[],D=[];v.forEach(m=>{var a,h,c;((a=r[m])==null?void 0:a.type)==="enum"?_.push(m):(c=(h=r[m])==null?void 0:h.common)!=null&&c.smartName&&D.push(m)}),_.forEach(m=>{m.startsWith("enum.rooms.")?b.push(m):m.startsWith("enum.functions.")&&R.push(m);const a=r[m].common.members;a!=null&&a.length&&a.forEach(h=>{r[h]&&(D.includes(h)||D.push(h))})});const M={id:"",objects:r,_keysOptional:v,_usedIdsOptional:k,ignoreIndicators:A,excludedTypes:W},E=[];D.forEach(m=>{M.id=m;const a=d.detect(M);a&&a.forEach(h=>{var w;const c=(w=h.states.find(i=>i.id))==null?void 0:w.id;if(!c||E.find(i=>i.id===c))return;const j=r[c],z={id:c,name:V(j.common.name,f),type:j.type,deviceType:h.type,states:h.states.filter(i=>i.id).map(i=>({id:i.id,name:i.name,role:i.defaultRole,type:r[i.id].common.type,unit:r[i.id].common.unit,read:r[i.id].common.read===void 0?!0:r[i.id].common.read,write:r[i.id].common.write===void 0?!0:r[i.id].common.write}))},T=c.split(".");let e,o;(j.type==="channel"||j.type==="state")&&(T.pop(),e=T.join("."),r[e]&&(r[e].type==="channel"||r[e].type==="folder")?(T.pop(),o=T.join("."),(!r[o]||r[o].type!=="device"&&r[e].type!=="folder")&&(o=void 0)):e=void 0);const I=b.find(i=>{var x,p,t;return(x=r[i].common.members)!=null&&x.includes(c)||e&&((p=r[i].common.members)!=null&&p.includes(e))?!0:o&&((t=r[i].common.members)==null?void 0:t.includes(o))});I&&(z.room=V(r[I].common.name,f));const g=R.find(i=>{var x,p,t;return(x=r[i].common.members)!=null&&x.includes(c)||e&&((p=r[i].common.members)!=null&&p.includes(e))?!0:o&&((t=r[i].common.members)==null?void 0:t.includes(o))});g&&(z.function=V(r[g].common.name,f)),E.push(z)})});for(let m=0;m<E.length;m++){const a=E[m];if(a.type==="state"||a.type==="channel"){const h=a.id.split(".");h.pop();const c=r[h.join(".")];if(c&&(c.type==="channel"||c.type==="device"||c.type==="folder")){a.name=V(((P=c.common)==null?void 0:P.name)||a.name,f),h.pop();const j=r[h.join(".")];(j==null?void 0:j.type)==="device"&&((N=j.common)!=null&&N.icon)&&(a.name=V(((L=j.common)==null?void 0:L.name)||a.name,f))}else a.name=V(((K=c==null?void 0:c.common)==null?void 0:K.name)||a.name,f)}}return E}const _e=async()=>(await je).default,we={ru:"Russian",en:"English",de:"German",es:"Spanish",fr:"French",it:"Italian",pl:"Polish",nl:"Dutch",pt:"Portuguese",uk:"Ukrainian","zh-cn":"Chinese"},Y={flexShrink:0,opacity:.7},ne={openai:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",style:Y,children:n.jsx("path",{d:"M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .51 4.911 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.99 5.99 0 0 0 3.997-2.9 6.056 6.056 0 0 0-.747-7.073zM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.141-.081 4.779-2.758a.795.795 0 0 0 .392-.681v-6.737l2.02 1.168a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494zM3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085 4.783 2.759a.771.771 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646zM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.676l5.815 3.355-2.02 1.168a.076.076 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.872zm16.597 3.855-5.833-3.387L15.119 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667zm2.01-3.023-.141-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08L8.704 5.46a.795.795 0 0 0-.393.681zm1.097-2.365 2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5z"})}),anthropic:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",style:Y,children:n.jsx("path",{d:"M17.304 3.54h-3.604L7.128 20.46h3.604l1.345-3.462h6.932l1.345 3.462H24L17.304 3.54zm-3.45 10.696 2.647-6.812 2.647 6.812h-5.295zM6.696 3.54H3.092L0 20.46h3.604L6.696 3.54z"})}),gemini:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",style:Y,children:n.jsx("path",{d:"M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0z"})}),deepseek:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",style:Y,children:n.jsx("path",{d:"M5 3h6a9 9 0 0 1 0 18H5V3zm4 14V7h2a5 5 0 0 1 0 10H9z"})})};async function se(s,f){const r=Object.keys(f);for(let v=0;v<r.length;v++){const d=await s.getObject(r[v]),k=((d==null?void 0:d.native.gptKey)||"").trim(),A=((d==null?void 0:d.native.claudeKey)||"").trim(),W=((d==null?void 0:d.native.geminiKey)||"").trim(),_=((d==null?void 0:d.native.deepseekKey)||"").trim(),b=((d==null?void 0:d.native.gptBaseUrl)||"").trim()||void 0;if(k||A||W||_||b)return{gptKey:k,claudeKey:A,geminiKey:W,deepseekKey:_,gptBaseUrl:b}}return null}const De=s=>{const[f,r]=S(window.localStorage.getItem("openai-question")||""),[v,d]=S(""),[k,A]=S(!1),[W,_]=S(!1),[b,R]=S(window.localStorage.getItem("openai-model")||""),[D,M]=S(!1),[E,P]=S([]),[N,L]=S(!0),[K,m]=S(null),a=H(null),h=H(null),c=H({}),j=H(null),z=J(async e=>{L(!0),m(null);try{const o=await se(s.socket,s.runningInstances);if(e!=null&&e.current)return;if(!o){L(!1);return}h.current=o;const I=Object.keys(s.runningInstances)[0];if(!I){m(l.I18n.t("No running javascript instance found")),L(!1);return}const g=[],w={},i=[],x=[],p=(t,B)=>{for(const O of t){const C=O.toLowerCase();C.includes("embedding")||C.includes("moderation")||C.startsWith("dall-e")||C.startsWith("tts-")||C.startsWith("whisper")||C.startsWith("babbage")||C.startsWith("davinci")||C.startsWith("sora")||C.startsWith("omni-moderation")||w[O]||(g.push(O),w[O]=B)}};if((o.gptKey||o.gptBaseUrl)&&x.push(s.socket.sendTo(I,"testApiConnection",{apiKey:o.gptKey,baseUrl:o.gptBaseUrl||"",provider:"openai"}).then(t=>{t.models?p(t.models,"openai"):t.error&&i.push(`OpenAI: ${t.error}`)}).catch(t=>{i.push(`OpenAI: ${String(t)}`)})),o.claudeKey&&x.push(s.socket.sendTo(I,"testApiConnection",{apiKey:o.claudeKey,provider:"anthropic"}).then(t=>{t.models?p(t.models,"anthropic"):t.error&&i.push(`Anthropic: ${t.error}`)}).catch(t=>{i.push(`Anthropic: ${String(t)}`)})),o.geminiKey&&x.push(s.socket.sendTo(I,"testApiConnection",{apiKey:o.geminiKey,provider:"gemini"}).then(t=>{t.models?p(t.models,"gemini"):t.error&&i.push(`Gemini: ${t.error}`)}).catch(t=>{i.push(`Gemini: ${String(t)}`)})),o.deepseekKey&&x.push(s.socket.sendTo(I,"testApiConnection",{apiKey:o.deepseekKey,provider:"deepseek"}).then(t=>{t.models?p(t.models,"deepseek"):t.error&&i.push(`DeepSeek: ${t.error}`)}).catch(t=>{i.push(`DeepSeek: ${String(t)}`)})),await Promise.all(x),e!=null&&e.current)return;if(c.current=w,g.length>0){g.sort(),P(g);const t=window.localStorage.getItem("openai-model");t&&g.includes(t)?R(t):R(g[0])}i.length>0&&m(i.join("; "))}catch(o){console.error("Failed to fetch models:",o),e!=null&&e.current||m(l.I18n.t("Request failed: %s",String(o)))}e!=null&&e.current||L(!1)},[s.socket,s.runningInstances]);re(()=>{const e={current:!1};return z(e),()=>{e.current=!0}},[z]);const T=J(async()=>{let e;a.current?e=a.current:(e=await Ie(s.socket),a.current=e,console.log(`devices: ${JSON.stringify(e,null,2)}`));let o=h.current;o||(o=await se(s.socket,s.runningInstances),h.current=o);let I;if(j.current?I=j.current:(I=await _e(),j.current=I),!o){M(!0);return}const g=c.current[b];if(!g){_(l.I18n.t("Please select a valid model"));return}let w,i;g==="anthropic"?(w=o.claudeKey,i=""):g==="gemini"?(w=o.geminiKey,i=""):g==="deepseek"?(w=o.deepseekKey,i=""):(w=o.gptKey,i=o.gptBaseUrl||"");const x=Object.keys(s.runningInstances)[0];if(!x){_(l.I18n.t("No running javascript instance found"));return}A(!0),_(!1);try{const p=await s.socket.sendTo(x,"chatCompletion",{apiKey:w,baseUrl:i,model:b,provider:g,messages:[{role:"system",content:`You are programmer. Here is a documentation:
2
-
3
- ${I}`},{role:"system",content:`Here is list of devices:
4
-
5
- ${JSON.stringify(e,null,2)}`},{role:"user",content:`Write JavaScript code that does:
6
-
7
- ${f}
8
- Return only code.
9
- Write comments in ${we[l.I18n.getLanguage()]||"English"}.
10
- You can call async function directly in the code without encapsulate them in async function as this code will be already executed in async function.
11
- Do not import any libraries as all functions are already imported.`}]});if(p.error)_(p.error);else{let t=p.content||"";t=t.replace(/<think>[\s\S]*?<\/think>/gi,""),t=t.replace(/<\|endoftext\|>/g,""),t=t.replace(/<\|im_start\|>[\s\S]*?<\|im_end\|>/g,""),t=t.replace(/<\|im_start\|>[\s\S]*/g,"");const B=t.match(/```(?:javascript|js|typescript)?\n?([\s\S]*?)```/m);let O;if(B)O=B[1].trim();else{const C=t.split(`
12
- `),U=[];let q=!1;for(const y of C){const u=y.trim();!q&&u===""||(!q&&(u.startsWith("//")||u.startsWith("const ")||u.startsWith("let ")||u.startsWith("var ")||u.startsWith("function ")||u.startsWith("async ")||u.startsWith("await ")||u.startsWith("if ")||u.startsWith("for ")||u.startsWith("on(")||u.startsWith("schedule(")||u.startsWith("setState")||u.startsWith("getState")||u.startsWith("createState")||u.startsWith("$")||u.startsWith("'use strict'")||u.startsWith('"use strict"'))&&(q=!0),q&&U.push(y))}for(;U.length>0;){const y=U[U.length-1].trim();if(y===""||y.length>0&&!y.startsWith("//")&&!y.startsWith("*")&&!y.startsWith("}")&&!y.startsWith(");")&&!y.endsWith(";")&&!y.endsWith("}")&&!y.endsWith(")")&&!y.endsWith(",")&&!y.endsWith("{")&&/^[A-Z]/.test(y))U.pop();else break}O=U.join(`
13
- `).trim()}d(O||"")}}catch(p){console.error("Chat request failed:",p),_(l.I18n.t("Request failed: %s",String(p)))}A(!1)},[f,b,s.runningInstances,s.socket]);return n.jsxs(F,{maxWidth:"lg",sx:{"& .MuiDialog-paper":{height:"calc(100% - 100px)"}},open:!0,onClose:()=>s.onClose(),fullWidth:!0,children:[D&&n.jsxs(F,{maxWidth:"lg",open:!0,onClose:()=>M(!1),fullWidth:!0,children:[n.jsx(Q,{children:l.I18n.t("No API key found")}),n.jsxs(Z,{style:{display:"flex",flexDirection:"column",gap:8},children:[n.jsx("div",{children:l.I18n.t("You have to enter at least one API key in the configuration of javascript adapter.")}),n.jsx($,{variant:"contained",onClick:()=>{const e=Object.keys(s.runningInstances);window.open(`../../#tab-instances/config/${e[0]||"system.adapter.javascript.0"}`,"_blank"),M(!1)},children:l.I18n.t("Open configuration")})]}),n.jsx(X,{children:n.jsx($,{variant:"contained",startIcon:n.jsx(te,{}),onClick:()=>M(!1),children:l.I18n.t("Close")})})]}),n.jsx(Q,{children:l.I18n.t("AI code generator")}),n.jsxs(Z,{style:{display:"flex",flexDirection:"column",gap:8,height:"100%"},children:[n.jsx("div",{children:n.jsx(oe,{variant:"standard",multiline:!0,autoFocus:!0,disabled:k,fullWidth:!0,onKeyUp:e=>{e.key==="Enter"&&e.ctrlKey&&T()},label:l.I18n.t("Enter your question"),helperText:l.I18n.t("Press Ctrl+Enter to get the answer"),value:f,onChange:e=>{window.localStorage.setItem("openai-question",e.target.value),r(e.target.value)}})}),n.jsxs("div",{style:{display:"flex",alignItems:"baseline"},children:[n.jsx($,{variant:"contained",disabled:k||!f||!b,startIcon:n.jsx(ve,{}),onClick:async()=>T(),children:k?n.jsx(ae,{size:24}):l.I18n.t("Ask")}),n.jsxs(ce,{style:{width:300,marginLeft:20},disabled:k,variant:"standard",error:!!K,children:[n.jsx(le,{children:l.I18n.t("Model")}),n.jsxs(de,{variant:"standard",value:b,disabled:N||!!K,renderValue:e=>n.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:8},children:[ne[c.current[e]],e]}),onChange:e=>{window.localStorage.setItem("openai-model",e.target.value),W&&_(!1),R(e.target.value)},children:[N&&n.jsx(ee,{value:"",disabled:!0,children:l.I18n.t("Loading models...")}),E.map(e=>n.jsx(ee,{value:e,children:n.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:8},children:[ne[c.current[e]],e]})},e))]})]}),K&&n.jsx($,{style:{marginLeft:10},variant:"outlined",color:"error",startIcon:n.jsx(fe,{}),onClick:()=>{z()},children:l.I18n.t("Retry")})]}),K&&n.jsx("div",{style:{color:s.themeType==="dark"?"#984242":"#bb0000"},children:K}),n.jsx("div",{children:l.I18n.t("Result")}),n.jsx("div",{style:{height:"calc(100% - 155px)"},children:W?n.jsx("div",{style:{color:s.themeType==="dark"?"#984242":"#bb0000"},children:W}):n.jsx(pe,{triggerPrettier:1,adapterName:s.adapterName,runningInstances:s.runningInstances,style:{height:"100%",width:"100%",resize:"none"},name:"ai",socket:s.socket,readOnly:!0,checkJs:!0,code:v,isDark:s.themeType==="dark",language:s.language||"javascript"})})]}),n.jsxs(X,{children:[n.jsx($,{color:"grey",variant:"outlined",disabled:!v,startIcon:n.jsx(ye,{}),onClick:()=>{l.Utils.copyToClipboard(v),window.alert(l.I18n.t("Copied"))},children:l.I18n.t("Copy to clipboard")}),n.jsx($,{color:"primary",variant:"contained",disabled:!v||!!W,startIcon:n.jsx(ge,{}),onClick:()=>{s.onAddCode(v),s.onClose()},children:l.I18n.t("Use generated code")}),n.jsx($,{color:"grey",variant:"contained",startIcon:n.jsx(te,{}),onClick:()=>s.onClose(),children:l.I18n.t("Close")})]})]})};export{De as default};
@@ -1,2 +0,0 @@
1
- import{j as e}from"./createSvgIcon-DPvF8xqu.js";import{a as n}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as l,a as c,b as h,z as o,h as d,i}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js";import{_ as a}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import p from"./ScriptEditorVanillaMonaco-DSYvOslZ.js";import{S as m}from"./Save-Cld9qv9i.js";import{a as g}from"./index-C49cpVll.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";const s={textArea:{width:"calc(100% - 10px)",resize:"none"},dialog:{height:"95%"},fullHeight:{height:"100%",overflow:"hidden"},args:r=>({color:r.palette.mode==="dark"?"white":"black",height:30,width:"100%",fontSize:16}),argsTitle:r=>({color:r.palette.mode==="dark"?"white":"black",fontWeight:"bold"})};class b extends n.Component{constructor(t){super(t),this.state={changed:!1,source:!t.source&&t.isReturn?`
2
- return false`:t.source}}componentDidMount(){setTimeout(()=>{var t;try{(t=window.document.getElementById("source-text-area"))==null||t.focus()}catch{}},100)}handleCancel(){this.props.onClose(!1)}handleOk(){(!this.props.isReturn||this.state.source.includes("return "))&&this.props.onClose(this.state.source)}onChange(t){this.setState({changed:!0,source:t})}render(){return e.jsxs(l,{onClose:()=>!1,maxWidth:"lg",sx:{"& .MuiDialog-paper":s.dialog},fullWidth:!0,open:!0,"aria-labelledby":"source-dialog-title",children:[e.jsx(c,{id:"source-dialog-title",children:a.I18n.t("Function editor")}),e.jsxs(h,{style:s.fullHeight,children:[this.props.args&&e.jsxs(o,{sx:s.args,children:[e.jsx(o,{component:"span",sx:s.argsTitle,children:a.I18n.t("function (")}),this.props.args,e.jsx(o,{component:"span",sx:s.argsTitle,children:")"})]},"arguments"),e.jsx(p,{triggerPrettier:1,adapterName:this.props.adapterName,runningInstances:this.props.runningInstances,style:{...s.textArea,height:this.props.args?"calc(100% - 30px)":"100%"},name:"blockly",socket:this.props.socket,readOnly:!1,checkJs:!1,changed:this.state.changed,code:this.state.source,isDark:this.props.themeType==="dark",onChange:t=>this.onChange(t),language:"javascript"},"scriptEditor")]}),e.jsxs(d,{children:[e.jsx(i,{variant:"contained",onClick:()=>this.handleOk(),color:"primary",startIcon:e.jsx(m,{}),children:a.I18n.t("Save")}),e.jsx(i,{color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:e.jsx(g,{}),children:a.I18n.t("Cancel")})]})]})}}export{b as default};
@@ -1 +0,0 @@
1
- import{j as r}from"./createSvgIcon-DPvF8xqu.js";import{a as f}from"./iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js";import{_ as S,a as w,b,h as C,i as y,Q as T,o as k,a0 as E}from"./iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js";import{n as D,X as O}from"./index-C49cpVll.js";import{_ as u}from"./iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js";import"./iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js";import"./iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js";function v(m){return/^script\.js\.global\./.test(m)}let N=0;function L(m){const t=/\x1b\[[0-9;]*m/g;return m.replace(t,"")}class V extends f.Component{monacoDiv=null;editor=null;monaco=window.monaco;get monacoTS(){var t,i;return(i=(t=this.monaco)==null?void 0:t.languages)==null?void 0:i.typescript}insert="";originalCode;runningInstancesStr;monacoCounter=0;location;breakpoints;lastSearch="";typings={};decorations=[];triggerPrettier;contentChangeDisposable=null;mouseDownDisposable=null;constructor(t){super(t),this.state={name:"current",isDark:t.isDark||!1,language:t.language||"javascript",readOnly:t.readOnly||!1,alive:!0,check:!1,searchText:this.props.searchText||"",typingsLoaded:!1,showError:null},this.triggerPrettier=t.triggerPrettier,this.runningInstancesStr=JSON.stringify(this.props.runningInstances),this.originalCode=t.code||"",this.monacoDiv=f.createRef()}waitForMonaco(t){var e,s,o,n;let i=!!((s=(e=this.monacoTS)==null?void 0:e.typescriptDefaults)!=null&&s.getCompilerOptions);if(!i||!this.props.runningInstances){if(this.monaco=window.monaco,i=!!((n=(o=this.monacoTS)==null?void 0:o.typescriptDefaults)!=null&&n.getCompilerOptions),this.monacoCounter++,!i&&this.monacoCounter<20){console.log("wait for monaco loaded"),setTimeout(()=>this.waitForMonaco(t),200);return}this.monacoCounter>=20&&console.error("Cannot load monaco!")}else t&&t()}loadTypings(t){if(!this.editor)return;t||=this.props.runningInstances;const i=t&&Object.keys(t).find(e=>t==null?void 0:t[e]);i&&this.props.socket.sendTo(i.replace("system.adapter.",""),"loadTypings",null).then(e=>{this.setState({alive:!0,check:!0,typingsLoaded:!0}),this.setTypeCheck(!0),e.typings?(this.typings=e.typings,this.setEditorTypings(this.state.name)):console.error(`failed to load typings: ${e.error}`)})}componentDidMount(){var e,s,o,n,c,l,a,d;let t=!!((s=(e=this.monacoTS)==null?void 0:e.typescriptDefaults)!=null&&s.getCompilerOptions);if((!t||!this.props.runningInstances)&&(this.monaco=window.monaco,t=!!((n=(o=this.monacoTS)==null?void 0:o.typescriptDefaults)!=null&&n.getCompilerOptions),!t)){console.log("wait for monaco loaded..."),this.waitForMonaco(()=>this.componentDidMount());return}if(!this.editor&&t&&this.monaco){console.log("Init editor"),(l=(c=this.props).onRegisterSelect)==null||l.call(c,()=>{var p;if(this.editor){const g=this.editor.getSelection();if(g)return(p=this.editor.getModel())==null?void 0:p.getValueInRange(g)}});const h=this.monacoTS.typescriptDefaults.getCompilerOptions();h.allowJs=!0,h.checkJs=this.props.checkJs!==!1,h.noLib=!0,h.lib=[],h.useUnknownInCatchVariables=!1,h.moduleResolution=this.monacoTS.ModuleResolutionKind.NodeJs,h.target=this.monacoTS.ScriptTarget.ESNext,h.module=this.monacoTS.ModuleKind.ESNext,h.allowNonTsExtensions=!0,this.monacoTS.typescriptDefaults.setCompilerOptions(h),this.setTypeCheck(!1),(a=this.monacoDiv)!=null&&a.current&&(this.editor=this.monaco.editor.create((d=this.monacoDiv)==null?void 0:d.current,{lineNumbers:"on",scrollBeyondLastLine:!1,automaticLayout:!0,glyphMargin:!!this.props.breakpoints,colorDecorators:!0}),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()),this.loadTypings(),this.props.onForceSave&&this.editor.addCommand(this.monaco.KeyMod.CtrlCmd|this.monaco.KeyCode.KeyS,()=>this.props.onForceSave&&this.props.onForceSave()),setTimeout(()=>{this.highlightText(this.state.searchText),this.location=this.props.location||void 0,this.breakpoints=this.props.breakpoints,this.showDecorators()}))}const i={selectOnLineNumbers:!0,scrollBeyondLastLine:!1,automaticLayout:!0,readOnly:this.state.readOnly,language:this.state.language,isDark:this.state.isDark};this.setEditorOptions(i),this.editor&&(this.editor.focus(),this.editor.setValue(this.originalCode),this.props.onToggleBreakpoint&&(this.mouseDownDisposable=this.editor.onMouseDown(h=>{var g;const p=h.target;this.props.onToggleBreakpoint&&((g=p.detail)==null?void 0:g.glyphMarginLeft)!==void 0&&p.position&&this.props.onToggleBreakpoint(p.position.lineNumber-1)})))}setEditorOptions(t){var i;t&&(t.language&&this.setEditorLanguage(t.language),this.editor&&(t.readOnly!==void 0&&this.editor.updateOptions({readOnly:t.readOnly}),t.lineWrap!==void 0&&this.editor.updateOptions({wordWrap:t.lineWrap?"on":"off"})),t.typeCheck!==void 0&&this.setTypeCheck(t.typeCheck),t.isDark!==void 0&&((i=this.monaco)==null||i.editor.setTheme(t.isDark?"vs-dark":"vs")))}componentWillUnmount(){var t,i,e,s;(t=this.contentChangeDisposable)==null||t.dispose(),this.contentChangeDisposable=null,(i=this.mouseDownDisposable)==null||i.dispose(),this.mouseDownDisposable=null,this.editor&&((s=(e=this.props).onRegisterSelect)==null||s.call(e,null),this.editor.dispose(),this.editor=null)}async doPrettier(){var e,s,o,n;const t=this.props.runningInstances&&Object.keys(this.props.runningInstances).find(c=>{var l;return(l=this.props.runningInstances)==null?void 0:l[c]});if(!t){window.alert(u.I18n.t("No script adapter instance found to format the code"));return}const i=await this.props.socket.sendTo(t.replace("system.adapter.",""),"prettier",{code:(e=this.editor)==null?void 0:e.getValue(),type:this.state.language});i.error?this.setState({showError:{title:u.I18n.t("Error formatting code"),message:L(i.error)}}):i.code&&((s=this.editor)==null||s.setValue(i.code),(n=(o=this.props).onChange)==null||n.call(o,i.code),this.showDecorators())}setEditorLanguage(t){var e,s;if(!this.editor)return;const i=this.editor.getModel();if(i){const o=i.getValue(),n=i.uri.path,c=typeof n=="string"&&n.includes(".")?n.substring(0,n.lastIndexOf(".")):"index",l=t==="javascript"?"js":t==="typescript"?"ts":t;i.dispose();const a=t==="javascript"||t==="typescript"?"typescript":t,d=(e=this.monaco)==null?void 0:e.editor.createModel(o,a,this.monaco.Uri.from({scheme:window.location.protocol.replace(":",""),path:`${c}${N++}.${l}`}));d&&(this.editor.setModel(d),(s=this.contentChangeDisposable)==null||s.dispose(),this.contentChangeDisposable=this.editor.onDidChangeModelContent(()=>this.onChange()))}}setTypeCheck(t){var e,s;const i={noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive};(e=this.monacoTS)==null||e.typescriptDefaults.setDiagnosticsOptions(i),(s=this.monacoTS)==null||s.javascriptDefaults.setDiagnosticsOptions({noSemanticValidation:!this.state.alive||!t,noSyntaxValidation:!this.state.alive})}setEditorTypings(t=""){var o,n,c,l;const i=v(t),e=`${t}.d.ts`,s=[];for(const a of Object.keys(this.typings))i&&(a==="global.d.ts"||a.startsWith("script.js.global")&&a!==e)||s.push({filePath:a,content:this.typings[a]});if((n=(o=this.monacoTS)==null?void 0:o.typescriptDefaults)!=null&&n.setExtraLibs)this.monacoTS.typescriptDefaults.setExtraLibs(s);else if((l=(c=this.monacoTS)==null?void 0:c.typescriptDefaults)!=null&&l.addExtraLib){const a=this.monacoTS.typescriptDefaults.getExtraLibs();s.forEach(d=>{!a[d.filePath]&&this.monaco&&this.monacoTS.typescriptDefaults.addExtraLib(d.content,d.filePath)})}}insertTextIntoEditor(t){if(!this.editor||!this.monaco)return;const i=this.editor.getSelection();if(i){const e=new this.monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editor.executeEdits("",[{range:e,text:t,forceMoveMarkers:!0}])}this.editor.focus()}highlightText(t){var e;if(!this.editor||!this.monaco)return;const i=t?(e=this.editor.getModel())==null?void 0:e.findMatches(t,!0,!1,!1,null,!0):void 0;if(i!=null&&i.length)i.forEach(s=>{var o;return(o=this.editor)==null?void 0:o.setSelection(s.range)}),this.editor.revealLine(i[0].range.startLineNumber);else{const s=this.editor.getPosition();if(s){const o=s.lineNumber,n=s.column;this.editor.setSelection(new this.monaco.Range(o,n,o,n))}}}showDecorators(){var i;const t=[];if(this.location&&this.monaco&&(t.push({range:new this.monaco.Range(this.location.lineNumber+1,(this.location.columnNumber||0)+1,this.location.lineNumber+1,1e3),options:{isWholeLine:!1,className:this.props.isDark?"monacoCurrentLineDark":"monacoCurrentLine"}}),t.push({range:new this.monaco.Range(this.location.lineNumber+1,0,this.location.lineNumber+1,0),options:{isWholeLine:!0,className:this.props.isDark?"monacoCurrentFullLineDark":"monacoCurrentFullLine"}})),(i=this.breakpoints)==null||i.forEach(e=>{this.monaco&&t.push({range:new this.monaco.Range(e.location.lineNumber+1,0,e.location.lineNumber+1,100),options:{isWholeLine:!0,glyphMarginClassName:this.props.isDark?"monacoBreakPointDark":"monacoBreakPoint"}})}),this.editor){const e=this.editor.getModel();e&&(this.decorations=e.deltaDecorations(this.decorations,t))}}initNewScript(t,i){var e;this.setState({name:t}),this.originalCode=i||"",(e=this.editor)==null||e.setValue(i||""),this.highlightText(this.lastSearch),this.showDecorators(),this.setEditorTypings(t)}scrollToLineIfNeeded(t){if(this.editor){const i=this.editor.getVisibleRanges();(!i||!i[0]||i[0].startLineNumber>t||t>i[0].endLineNumber)&&this.editor.revealLineInCenter(t)}}UNSAFE_componentWillReceiveProps(t){const i={};this.state.name!==t.name&&this.initNewScript(t.name,t.code),JSON.stringify(t.runningInstances)!==this.runningInstancesStr&&(this.runningInstancesStr=JSON.stringify(t.runningInstances),this.state.typingsLoaded||this.loadTypings(t.runningInstances)),this.editor&&!t.changed&&(t.code!==this.originalCode||t.code!==this.editor.getValue())&&(this.originalCode=t.code||"",this.editor.setValue(this.originalCode),this.showDecorators(),this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)),t.searchText!==this.lastSearch&&(this.lastSearch=t.searchText||"",this.highlightText(this.lastSearch)),JSON.stringify(t.location)!==JSON.stringify(this.location)&&JSON.stringify(t.breakpoints)!==JSON.stringify(this.breakpoints)?(this.location=t.location||void 0,this.breakpoints=t.breakpoints,this.showDecorators(),this.editor&&this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)):JSON.stringify(t.breakpoints)!==JSON.stringify(this.breakpoints)?(this.breakpoints=t.breakpoints,this.showDecorators()):JSON.stringify(t.location)!==JSON.stringify(this.location)&&(this.location=t.location||void 0,this.showDecorators(),this.editor&&this.location&&this.scrollToLineIfNeeded(this.location.lineNumber+1)),this.state.language!==(t.language||"javascript")?(this.setState({language:t.language||"javascript"}),i.language=t.language||"javascript"):this.state.readOnly!==(t.readOnly||!1)?(this.setState({readOnly:t.readOnly||!1}),i.readOnly=t.readOnly):this.state.isDark!==(t.isDark||!1)&&(this.setState({isDark:t.isDark||!1}),i.isDark=t.isDark),this.setEditorOptions(i),this.insert!==t.insert&&(this.insert=t.insert||"",this.insert&&(console.log(`Insert text: ${this.insert}`),setTimeout(e=>{this.insertTextIntoEditor(e),setTimeout(()=>this.props.onInserted&&this.props.onInserted(),100)},100,this.insert)))}onChange(){var t,i;!this.props.readOnly&&this.editor&&((i=(t=this.props).onChange)==null||i.call(t,this.editor.getValue()))}renderErrorDialog(){return this.state.showError?this.state.showError.full?r.jsxs(S,{open:!0,maxWidth:"md",onClose:()=>this.setState({showError:null}),children:[r.jsx(w,{children:this.state.showError.title||u.I18n.t("Error")}),r.jsx(b,{children:r.jsx("pre",{children:r.jsx("code",{children:this.state.showError.message})})}),r.jsx(C,{children:r.jsxs(y,{variant:"contained",startIcon:r.jsx(D,{}),onClick:()=>this.setState({showError:null}),children:[u.I18n.t("Close")," "]})})]}):r.jsx(T,{open:!0,autoHideDuration:5e3,onClose:()=>this.setState({showError:null}),message:this.state.showError.title,action:r.jsxs(f.Fragment,{children:[r.jsx(y,{color:"secondary",size:"small",onClick:()=>this.setState({showError:{...this.state.showError,full:!0}}),children:u.I18n.t("More")}),r.jsx(k,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({showError:null}),children:r.jsx(D,{fontSize:"small"})})]})}):null}render(){var t;return!((t=this.monacoTS)!=null&&t.typescriptDefaults)||!this.props.runningInstances?(setTimeout(()=>{this.monaco=window.monaco,this.forceUpdate()},200),null):(this.props.triggerPrettier!==this.triggerPrettier&&(this.triggerPrettier=this.props.triggerPrettier,setTimeout(()=>this.doPrettier().catch(i=>console.error("Error formatting code:",i)),50)),r.jsxs("div",{ref:this.monacoDiv,style:{...this.props.style,width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:[this.renderErrorDialog(),!this.state.check&&r.jsx(E,{size:"small",title:u.I18n.t("Check is not active, because javascript adapter is disabled"),style:{bottom:10,right:10,opacity:.5,position:"absolute",zIndex:1,background:"red",color:"white"},color:"secondary",children:r.jsx(O,{})})]}))}}export{V as default};