@json-to-office/jto 5.2.0 → 5.3.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.
- package/dist/cli.js +1 -1
- package/dist/client/assets/{HomePage-FzRGVdrO.js → HomePage-PKIVItSZ.js} +4 -4
- package/dist/client/assets/{HomePage-FzRGVdrO.js.map → HomePage-PKIVItSZ.js.map} +1 -1
- package/dist/client/assets/{JsonEditorPage-DjbLMda1.js → JsonEditorPage-CoRaWJiD.js} +3 -3
- package/dist/client/assets/{JsonEditorPage-DjbLMda1.js.map → JsonEditorPage-CoRaWJiD.js.map} +1 -1
- package/dist/client/assets/{MonacoPluginProvider-CRemSLoy.js → MonacoPluginProvider-BRnOmPV0.js} +5 -5
- package/dist/client/assets/{MonacoPluginProvider-CRemSLoy.js.map → MonacoPluginProvider-BRnOmPV0.js.map} +1 -1
- package/dist/client/assets/{_virtual_jto-plugin-type-libs-Bns9FJk1.js → _virtual_jto-plugin-type-libs-BWCUBp-C.js} +34 -12
- package/dist/client/assets/{_virtual_jto-plugin-type-libs-Bns9FJk1.js.map → _virtual_jto-plugin-type-libs-BWCUBp-C.js.map} +1 -1
- package/dist/client/assets/_virtual_jto-sandbox-runtime-CH8UnjtH.js +2 -0
- package/dist/client/assets/_virtual_jto-sandbox-runtime-CH8UnjtH.js.map +1 -0
- package/dist/client/assets/{editor-CclDHMVO.js → editor-Dm1khfnn.js} +2 -2
- package/dist/client/assets/{editor-CclDHMVO.js.map → editor-Dm1khfnn.js.map} +1 -1
- package/dist/client/assets/{editor-monaco-json-D3j3jSTr.js → editor-monaco-json-DO_eqGWS.js} +2 -2
- package/dist/client/assets/{editor-monaco-json-D3j3jSTr.js.map → editor-monaco-json-DO_eqGWS.js.map} +1 -1
- package/dist/client/assets/index-BiJMw-wa.js +27 -0
- package/dist/client/assets/index-BiJMw-wa.js.map +1 -0
- package/dist/client/assets/{index-gnUT72CY.js → index-BjrSy9_x.js} +2 -2
- package/dist/client/assets/{index-gnUT72CY.js.map → index-BjrSy9_x.js.map} +1 -1
- package/dist/client/assets/{preview-Co1OedmP.js → preview-Dpxghqei.js} +2 -2
- package/dist/client/assets/{preview-Co1OedmP.js.map → preview-Dpxghqei.js.map} +1 -1
- package/dist/client/assets/{useQualityAnalysis-CKVtQGjt.js → useQualityAnalysis-DxBTon99.js} +2 -2
- package/dist/client/assets/{useQualityAnalysis-CKVtQGjt.js.map → useQualityAnalysis-DxBTon99.js.map} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/client/templates/client-report-blocks.docx.json +16 -3
- package/dist/client/templates/technical-report-blocks.docx.json +16 -3
- package/package.json +5 -5
- package/dist/client/assets/_virtual_jto-sandbox-runtime-l26u1ylW.js +0 -2
- package/dist/client/assets/_virtual_jto-sandbox-runtime-l26u1ylW.js.map +0 -1
- package/dist/client/assets/index-CHWwrrUS.js +0 -27
- package/dist/client/assets/index-CHWwrrUS.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor-monaco-json-
|
|
2
|
-
import{j as e,r}from"./react-vendor-BmQ2Ko_D.js";import{S as o,_ as i}from"./index-
|
|
3
|
-
//# sourceMappingURL=JsonEditorPage-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor-monaco-json-DO_eqGWS.js","assets/react-vendor-BmQ2Ko_D.js","assets/index-BiJMw-wa.js","assets/query-vendor--rhYD8mC.js","assets/radix-ui-BzbaiLpZ.js","assets/ui-vendor-BsAtAN16.js","assets/monaco-editor-DJsdM0WK.js","assets/state-vendor-Cq67_JbF.js","assets/index--kF4jVbp.css","assets/index-BjrSy9_x.js","assets/MonacoPluginProvider-BRnOmPV0.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{j as e,r}from"./react-vendor-BmQ2Ko_D.js";import{S as o,_ as i}from"./index-BiJMw-wa.js";import{S as n,O as l,l as a,M as d,D as c,m}from"./MonacoPluginProvider-BRnOmPV0.js";import"./query-vendor--rhYD8mC.js";import"./radix-ui-BzbaiLpZ.js";import"./ui-vendor-BsAtAN16.js";import"./monaco-editor-DJsdM0WK.js";import"./state-vendor-Cq67_JbF.js";const x=r.lazy(()=>i(()=>import("./editor-monaco-json-DO_eqGWS.js").then(s=>s.e),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])).then(s=>({default:s.EditorMonacoJsonMemoized})));function u(s){return e.jsx(r.Suspense,{fallback:e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsxs("div",{className:"text-center",children:[e.jsx(o,{className:"w-8 h-8 mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Loading editor..."})]})}),children:e.jsx(x,{...s})})}const h=[];function E(){const[s,t]=r.useState(!0);return r.useEffect(()=>{t(!1)},[]),s?e.jsx("div",{className:"flex items-center justify-center h-screen",children:e.jsx("div",{children:"Loading JSON Editor..."})}):e.jsx(n,{children:e.jsx(l,{children:e.jsx(a,{children:e.jsx(d,{children:e.jsx(c,{children:e.jsx(m,{diskPluginNames:h,children:e.jsx("section",{className:"flex h-screen w-full flex-col",children:e.jsx("div",{className:"grow overflow-hidden",children:e.jsxs("div",{className:"p-4 h-full",children:[e.jsx("h1",{className:"text-2xl font-bold mb-4",children:"JSON Editor"}),e.jsx("div",{className:"h-full",children:e.jsx(u,{name:"untitled",defaultValue:"",saveDocumentDebounceWait:1e3})})]})})})})})})})})})}export{E as JsonEditorPage};
|
|
3
|
+
//# sourceMappingURL=JsonEditorPage-CoRaWJiD.js.map
|
package/dist/client/assets/{JsonEditorPage-DjbLMda1.js.map → JsonEditorPage-CoRaWJiD.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":";8VAIA,MAAMA,EAA4BC,OAAK,UACrC,OAAO,kCAAsB,0DAAE,KAAMC,IAAY,CAC/C,QAASA,EAAO,0BAChB,CACJ,EAQO,SAASC,EAAqBC,EAAkC,CACrE,OACEC,MAACC,WAAA,CACC,eACG,OAAI,UAAU,0CACb,SAAAC,OAAC,OAAI,UAAU,cACb,UAAAF,MAACG,EAAA,CAAQ,UAAU,uBAAuB,EAC1CH,MAAC,KAAE,UAAU,gCAAgC,6BAAiB,GAChE,EACF,EAGF,SAAAA,MAACL,EAAA,CAA2B,GAAGI,CAAA,CAAO,GAG5C,CCtBA,MAAMK,EAAqC,GAEpC,SAASC,GAAiB,CAC/B,KAAM,CAACC,EAASC,CAAU,EAAIC,WAAS,EAAI,EAO3C,OALAC,YAAU,IAAM,CAEdF,EAAW,EAAK,CAClB,EAAG,EAAE,EAEDD,QAEC,OAAI,UAAU,4CACb,SAAAN,MAAC,OAAI,kCAAsB,EAC7B,EAKFA,MAACU,EAAA,CACC,SAAAV,MAACW,EAAA,CACC,SAAAX,MAACY,GACC,SAAAZ,MAACa,EAAA,CACC,SAAAb,MAACc,EAAA,CACC,SAAAd,MAACe,EAAA,CAAuB,gBAAiBX,EACvC,SAAAJ,MAAC,WAAQ,UAAU,gCACjB,SAAAA,MAAC,OAAI,UAAU,uBACb,SAAAE,OAAC,OAAI,UAAU,aACb,UAAAF,MAAC,MAAG,UAAU,0BAA0B,uBAAW,EACnDA,MAAC,OAAI,UAAU,SACb,SAAAA,MAACgB,EAAA,CACC,KAAK,WACL,aAAa,GACb,yBAA0B,KAC5B,CACF,GACF,EACF,EACF,EACF,EACF,EACF,EACF,EACF,EACF,CAEJ","names":["EditorMonacoJsonComponent","lazy","module","EditorMonacoJsonLazy","props","jsx","Suspense","jsxs","Spinner","NO_DISK_PLUGINS","JsonEditorPage","loading","setLoading","useState","useEffect","SettingsStoreProvider","OutputStoreProvider","ThemesStoreProvider","MonacoPluginProvider","DocumentsStoreProvider","BrowserPluginsProvider","EditorMonacoJsonMemoized"],"ignoreList":[],"sources":["../../../src/client/components/json-editor/editor-monaco-json-lazy.tsx","../../../src/client/pages/JsonEditorPage.tsx"],"sourcesContent":["import { lazy, Suspense } from 'react';\nimport { Spinner } from '../ui/spinner';\n\n// Lazy load the Monaco editor component\nconst EditorMonacoJsonComponent = lazy(() =>\n import('./editor-monaco-json').then((module) => ({\n default: module.EditorMonacoJsonMemoized,\n }))\n);\n\ninterface EditorMonacoJsonLazyProps {\n name: string;\n defaultValue: string;\n saveDocumentDebounceWait: number;\n}\n\nexport function EditorMonacoJsonLazy(props: EditorMonacoJsonLazyProps) {\n return (\n <Suspense\n fallback={\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-center\">\n <Spinner className=\"w-8 h-8 mx-auto mb-2\" />\n <p className=\"text-sm text-muted-foreground\">Loading editor...</p>\n </div>\n </div>\n }\n >\n <EditorMonacoJsonComponent {...props} />\n </Suspense>\n );\n}\n\nexport { EditorMonacoJsonLazy as EditorMonacoJsonMemoized };\n","import { useEffect, useState } from 'react';\nimport { EditorMonacoJsonMemoized } from '../components/json-editor/editor-monaco-json-lazy';\nimport { DocumentsStoreProvider } from '../store/documents-store-provider';\nimport { OutputStoreProvider } from '../store/output-store-provider';\nimport { SettingsStoreProvider } from '../store/settings-store-provider';\nimport { ThemesStoreProvider } from '../store/themes-store-provider';\nimport { MonacoPluginProvider } from '../components/MonacoPluginProvider';\nimport { BrowserPluginsProvider } from '../components/BrowserPluginsProvider';\n\nconst NO_DISK_PLUGINS: readonly string[] = [];\n\nexport function JsonEditorPage() {\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n // Initialize any necessary data\n setLoading(false);\n }, []);\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center h-screen\">\n <div>Loading JSON Editor...</div>\n </div>\n );\n }\n\n return (\n <SettingsStoreProvider>\n <OutputStoreProvider>\n <ThemesStoreProvider>\n <MonacoPluginProvider>\n <DocumentsStoreProvider>\n <BrowserPluginsProvider diskPluginNames={NO_DISK_PLUGINS}>\n <section className=\"flex h-screen w-full flex-col\">\n <div className=\"grow overflow-hidden\">\n <div className=\"p-4 h-full\">\n <h1 className=\"text-2xl font-bold mb-4\">JSON Editor</h1>\n <div className=\"h-full\">\n <EditorMonacoJsonMemoized\n name=\"untitled\"\n defaultValue=\"\"\n saveDocumentDebounceWait={1000}\n />\n </div>\n </div>\n </div>\n </section>\n </BrowserPluginsProvider>\n </DocumentsStoreProvider>\n </MonacoPluginProvider>\n </ThemesStoreProvider>\n </OutputStoreProvider>\n </SettingsStoreProvider>\n );\n}\n"],"file":"assets/JsonEditorPage-
|
|
1
|
+
{"version":3,"mappings":";8VAIA,MAAMA,EAA4BC,OAAK,UACrC,OAAO,kCAAsB,0DAAE,KAAMC,IAAY,CAC/C,QAASA,EAAO,0BAChB,CACJ,EAQO,SAASC,EAAqBC,EAAkC,CACrE,OACEC,MAACC,WAAA,CACC,eACG,OAAI,UAAU,0CACb,SAAAC,OAAC,OAAI,UAAU,cACb,UAAAF,MAACG,EAAA,CAAQ,UAAU,uBAAuB,EAC1CH,MAAC,KAAE,UAAU,gCAAgC,6BAAiB,GAChE,EACF,EAGF,SAAAA,MAACL,EAAA,CAA2B,GAAGI,CAAA,CAAO,GAG5C,CCtBA,MAAMK,EAAqC,GAEpC,SAASC,GAAiB,CAC/B,KAAM,CAACC,EAASC,CAAU,EAAIC,WAAS,EAAI,EAO3C,OALAC,YAAU,IAAM,CAEdF,EAAW,EAAK,CAClB,EAAG,EAAE,EAEDD,QAEC,OAAI,UAAU,4CACb,SAAAN,MAAC,OAAI,kCAAsB,EAC7B,EAKFA,MAACU,EAAA,CACC,SAAAV,MAACW,EAAA,CACC,SAAAX,MAACY,GACC,SAAAZ,MAACa,EAAA,CACC,SAAAb,MAACc,EAAA,CACC,SAAAd,MAACe,EAAA,CAAuB,gBAAiBX,EACvC,SAAAJ,MAAC,WAAQ,UAAU,gCACjB,SAAAA,MAAC,OAAI,UAAU,uBACb,SAAAE,OAAC,OAAI,UAAU,aACb,UAAAF,MAAC,MAAG,UAAU,0BAA0B,uBAAW,EACnDA,MAAC,OAAI,UAAU,SACb,SAAAA,MAACgB,EAAA,CACC,KAAK,WACL,aAAa,GACb,yBAA0B,KAC5B,CACF,GACF,EACF,EACF,EACF,EACF,EACF,EACF,EACF,EACF,CAEJ","names":["EditorMonacoJsonComponent","lazy","module","EditorMonacoJsonLazy","props","jsx","Suspense","jsxs","Spinner","NO_DISK_PLUGINS","JsonEditorPage","loading","setLoading","useState","useEffect","SettingsStoreProvider","OutputStoreProvider","ThemesStoreProvider","MonacoPluginProvider","DocumentsStoreProvider","BrowserPluginsProvider","EditorMonacoJsonMemoized"],"ignoreList":[],"sources":["../../../src/client/components/json-editor/editor-monaco-json-lazy.tsx","../../../src/client/pages/JsonEditorPage.tsx"],"sourcesContent":["import { lazy, Suspense } from 'react';\nimport { Spinner } from '../ui/spinner';\n\n// Lazy load the Monaco editor component\nconst EditorMonacoJsonComponent = lazy(() =>\n import('./editor-monaco-json').then((module) => ({\n default: module.EditorMonacoJsonMemoized,\n }))\n);\n\ninterface EditorMonacoJsonLazyProps {\n name: string;\n defaultValue: string;\n saveDocumentDebounceWait: number;\n}\n\nexport function EditorMonacoJsonLazy(props: EditorMonacoJsonLazyProps) {\n return (\n <Suspense\n fallback={\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-center\">\n <Spinner className=\"w-8 h-8 mx-auto mb-2\" />\n <p className=\"text-sm text-muted-foreground\">Loading editor...</p>\n </div>\n </div>\n }\n >\n <EditorMonacoJsonComponent {...props} />\n </Suspense>\n );\n}\n\nexport { EditorMonacoJsonLazy as EditorMonacoJsonMemoized };\n","import { useEffect, useState } from 'react';\nimport { EditorMonacoJsonMemoized } from '../components/json-editor/editor-monaco-json-lazy';\nimport { DocumentsStoreProvider } from '../store/documents-store-provider';\nimport { OutputStoreProvider } from '../store/output-store-provider';\nimport { SettingsStoreProvider } from '../store/settings-store-provider';\nimport { ThemesStoreProvider } from '../store/themes-store-provider';\nimport { MonacoPluginProvider } from '../components/MonacoPluginProvider';\nimport { BrowserPluginsProvider } from '../components/BrowserPluginsProvider';\n\nconst NO_DISK_PLUGINS: readonly string[] = [];\n\nexport function JsonEditorPage() {\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n // Initialize any necessary data\n setLoading(false);\n }, []);\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center h-screen\">\n <div>Loading JSON Editor...</div>\n </div>\n );\n }\n\n return (\n <SettingsStoreProvider>\n <OutputStoreProvider>\n <ThemesStoreProvider>\n <MonacoPluginProvider>\n <DocumentsStoreProvider>\n <BrowserPluginsProvider diskPluginNames={NO_DISK_PLUGINS}>\n <section className=\"flex h-screen w-full flex-col\">\n <div className=\"grow overflow-hidden\">\n <div className=\"p-4 h-full\">\n <h1 className=\"text-2xl font-bold mb-4\">JSON Editor</h1>\n <div className=\"h-full\">\n <EditorMonacoJsonMemoized\n name=\"untitled\"\n defaultValue=\"\"\n saveDocumentDebounceWait={1000}\n />\n </div>\n </div>\n </div>\n </section>\n </BrowserPluginsProvider>\n </DocumentsStoreProvider>\n </MonacoPluginProvider>\n </ThemesStoreProvider>\n </OutputStoreProvider>\n </SettingsStoreProvider>\n );\n}\n"],"file":"assets/JsonEditorPage-CoRaWJiD.js"}
|
package/dist/client/assets/{MonacoPluginProvider-CRemSLoy.js → MonacoPluginProvider-BRnOmPV0.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-editor-DJsdM0WK.js","assets/react-vendor-BmQ2Ko_D.js","assets/index-
|
|
2
|
-
var je=Object.defineProperty;var ke=(n,e,t)=>e in n?je(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var S=(n,e,t)=>ke(n,typeof e!="symbol"?e+"":e,t);import{r as g,j as v}from"./react-vendor-BmQ2Ko_D.js";import{a as V,d as L,p as D,b as K,e as F,c as me}from"./state-vendor-Cq67_JbF.js";import{loader as Z}from"./monaco-editor-DJsdM0WK.js";import{_ as b,q as Me,P as _e,F as U,r as se}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-editor-DJsdM0WK.js","assets/react-vendor-BmQ2Ko_D.js","assets/index-BiJMw-wa.js","assets/query-vendor--rhYD8mC.js","assets/radix-ui-BzbaiLpZ.js","assets/ui-vendor-BsAtAN16.js","assets/state-vendor-Cq67_JbF.js","assets/index--kF4jVbp.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var je=Object.defineProperty;var ke=(n,e,t)=>e in n?je(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var S=(n,e,t)=>ke(n,typeof e!="symbol"?e+"":e,t);import{r as g,j as v}from"./react-vendor-BmQ2Ko_D.js";import{a as V,d as L,p as D,b as K,e as F,c as me}from"./state-vendor-Cq67_JbF.js";import{loader as Z}from"./monaco-editor-DJsdM0WK.js";import{_ as b,q as Me,P as _e,F as U,r as se}from"./index-BiJMw-wa.js";function Ae(n){try{const e=JSON.parse(n);return!e||typeof e!="object"?{valid:!1,errors:[{message:"Theme must be a JSON object"}]}:typeof e.name!="string"||!e.name.trim()?{valid:!1,errors:[{message:'Theme must have a non-empty "name" property'}]}:{valid:!0}}catch(e){return{valid:!1,errors:[{message:e instanceof SyntaxError?`Invalid JSON: ${e.message}`:"Failed to parse theme JSON"}]}}}function Re(n){try{return n&&typeof n=="object"&&"name"in n&&typeof n.name=="string"?n.name:null}catch{return null}}const P=class P extends EventTarget{constructor(){super()}static getInstance(){return P.instance||(P.instance=new P),P.instance}emitThemeChange(e){this.dispatchEvent(new CustomEvent("themechange",{detail:e}))}onThemeChange(e){const t=r=>{e(r.detail)};return this.addEventListener("themechange",t),this._listenerCount=(this._listenerCount||0)+1,()=>{this.removeEventListener("themechange",t),this._listenerCount=Math.max(0,(this._listenerCount||1)-1)}}};S(P,"instance");let q=P;const oe=q.getInstance();function z(n){return new Promise((e,t)=>{n.oncomplete=n.onsuccess=()=>e(n.result),n.onabort=n.onerror=()=>t(n.error)})}function Ie(n,e){let t;const r=()=>{if(t)return t;const s=indexedDB.open(n);return s.onupgradeneeded=()=>s.result.createObjectStore(e),t=z(s),t.then(o=>{o.onclose=()=>t=void 0},()=>{}),t};return(s,o)=>r().then(a=>o(a.transaction(e,s).objectStore(e)))}let B;function Q(){return B||(B=Ie("keyval-store","keyval")),B}function $e(n,e=Q()){return e("readonly",t=>z(t.get(n)))}function Ve(n,e,t=Q()){return t("readwrite",r=>(r.put(e,n),z(r.transaction)))}function Le(n,e=Q()){return e("readwrite",t=>(t.delete(n),z(t.transaction)))}const ee={getItem:async n=>await $e(n)??null,setItem:async(n,e)=>{await Ve(n,e)},removeItem:async n=>{await Le(n)}};function It(n){const e={};for(const t of Object.values(n))t.valid&&t.parsed&&(e[t.name]=t.parsed);return e}const fe=()=>({customThemes:{}}),Fe={...fe()},ze=(n=Fe)=>V()(L(D((e,t)=>({...n,updateTheme:(r,s)=>e(o=>{const a=Ae(s);let i,c=r;if(a.valid)try{const w=JSON.parse(s);i=w;const d=Re(w);d&&(c=d)}catch{}const u=o.customThemes[r],l=!!u,p=(u==null?void 0:u.content)!==s,m={name:c,content:s,parsed:i,valid:a.valid,lastModified:new Date};return(p||!(u!=null&&u.valid)&&a.valid)&&a.valid&&setTimeout(()=>{oe.emitThemeChange({themeName:c,timestamp:Date.now(),changeType:l?"update":"create"})},0),{customThemes:{...o.customThemes,[r]:m}}}),removeTheme:r=>e(s=>{const o=s.customThemes[r],a={...s.customThemes};return delete a[r],o&&setTimeout(()=>{oe.emitThemeChange({themeName:o.name,timestamp:Date.now(),changeType:"delete"})},0),{customThemes:a}}),getTheme:r=>{const s=t();for(const o of Object.values(s.customThemes))if(o.valid&&o.name===r&&o.parsed)return o.parsed;return null},getAllThemeNames:()=>{const r=t(),s=[];for(const o of Object.values(r.customThemes))o.valid&&o.name&&s.push(o.name);return s},isThemeValid:r=>{const s=t();for(const o of Object.values(s.customThemes))if(o.name===r)return o.valid;return!1}}),{name:"themes-storage",version:4,storage:K(()=>ee),partialize:e=>({customThemes:e.customThemes}),onRehydrateStorage:()=>e=>{e&&e.customThemes&&Object.keys(e.customThemes).forEach(t=>{const r=e.customThemes[t];r.lastModified&&typeof r.lastModified=="string"&&(r.lastModified=new Date(r.lastModified))})}}))),W=g.createContext(void 0),$t=({children:n})=>{const e=g.useRef(void 0);return e.current||(e.current=ze(fe())),v.jsx(W.Provider,{value:e.current,children:n})},Vt=n=>{const e=g.useContext(W);if(!e)throw new Error("useThemesStore must be used within ThemesStoreProvider");return F(e,n)};function E(n){let e=5381;for(let t=0;t<n.length;t++)e=(e<<5)+e+n.charCodeAt(t)|0;return`${(e>>>0).toString(36)}-${n.length.toString(36)}`}function C(n,e={}){const t=Date.now();return{docName:n,enabled:!0,allowNetwork:!1,networkOrigins:[],status:"idle",sourceHash:"",diagnostics:[],createdAt:t,updatedAt:t,...e}}const y=me()(D(n=>({records:{},upsert:(e,t)=>n(r=>{const s=r.records[e]??C(e);return{records:{...r.records,[e]:{...s,...t,updatedAt:Date.now()}}}}),setEnabled:(e,t)=>n(r=>{const s=r.records[e]??C(e);return r.records[e]&&s.enabled===t?r:{records:{...r.records,[e]:{...s,enabled:t,updatedAt:Date.now()}}}}),setAllowNetwork:(e,t)=>n(r=>{const s=r.records[e]??C(e);return r.records[e]&&s.allowNetwork===t?r:{records:{...r.records,[e]:{...s,allowNetwork:t,updatedAt:Date.now()}}}}),setNetworkOrigins:(e,t)=>n(r=>{const s=r.records[e]??C(e),o=s.networkOrigins??[];return r.records[e]&&o.length===t.length&&o.every((a,i)=>a===t[i])?r:{records:{...r.records,[e]:{...s,networkOrigins:[...t],updatedAt:Date.now()}}}}),rename:(e,t)=>n(r=>{const s=r.records[e];if(!s||e===t)return r;const o={...r.records};return delete o[e],o[t]={...s,docName:t},{records:o}}),remove:e=>n(t=>{if(!t.records[e])return t;const r={...t.records};return delete r[e],{records:r}})}),{name:"jto-browser-plugins",version:3,storage:K(()=>ee),partialize:n=>({records:n.records}),migrate:n=>{const e=n,t={};for(const[r,s]of Object.entries((e==null?void 0:e.records)??{}))t[r]={...s,createdAt:s.createdAt??s.updatedAt??Date.now(),networkOrigins:s.networkOrigins??[]};return{records:t}}}));function ge(){const n=y.persist;return n.hasHydrated()?Promise.resolve():new Promise(e=>{const t=n.onFinishHydration(()=>{t(),e()})})}function he(n){const e=[];for(const t of Object.values(n.records))t.enabled&&t.status==="ready"&&t.metadata&&e.push({docName:t.docName,metadata:t.metadata});return e.sort((t,r)=>t.docName.localeCompare(r.docName))}function N(n){const e=R(n);return e.length===0?"":E(JSON.stringify(e))}function we(n,e){var r;let t;for(const s of Object.values(n))((r=s.metadata)==null?void 0:r.name)===e&&(!t||s.createdAt<t.createdAt)&&(t=s);return t==null?void 0:t.docName}function R(n){return he(n).map(e=>({name:e.metadata.name,versions:e.metadata.versions.map(t=>({version:t.version,propsSchema:t.propsSchema,...t.hasChildren?{hasChildren:!0}:{},...t.description?{description:t.description}:{}}))}))}function We(n){return((n==null?void 0:n.diagnostics)??[]).filter(e=>e.severity==="error")}const He=Object.freeze(Object.defineProperty({__proto__:null,activePluginsSignature:N,browserComponentsForSchema:R,componentNameOwner:we,createBrowserPluginRecord:C,recordErrors:We,selectActivePlugins:he,useBrowserPluginsStore:y,whenBrowserPluginsHydrated:ge},Symbol.toStringTag,{value:"Module"})),ie="'none'",Ue=/^(\*\.)?[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/;function Be(n){return n==="localhost"||n==="127.0.0.1"||n==="[::1]"}function ye(n){const e=n.trim().replace(/\/+$/,"");if(!e)return{ok:!1,reason:"is empty"};if(e==="*"||/^https?:$/i.test(e)||e==="*:*")return{ok:!1,reason:"is a wildcard — name the hosts you need"};const t=/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`https://${e}`,r=/^(https?:\/\/)\*\./i.test(t),s=r?t.replace(/^(https?:\/\/)\*\./i,"$1"):t;let o;try{o=new URL(s)}catch{return{ok:!1,reason:"is not a URL"}}if(o.username||o.password)return{ok:!1,reason:"must not carry credentials"};if(o.pathname!=="/"||o.search||o.hash)return{ok:!1,reason:"must be an origin, with no path"};const a=r?`*.${o.hostname}`:o.hostname;if(!Ue.test(a))return{ok:!1,reason:"is not a hostname"};const i=o.protocol.toLowerCase();return i!=="https:"&&i!=="http:"?{ok:!1,reason:"must be http or https"}:i==="http:"&&!Be(o.hostname)?{ok:!1,reason:"must use https (http is only for localhost)"}:{ok:!0,origin:`${i}//${a}${o.port?`:${o.port}`:""}`}}function Lt(n){const e=[],t=[];for(const r of n.split(/[\n,]/)){if(!r.trim())continue;const s=ye(r);s.ok?e.includes(s.origin)||e.push(s.origin):t.push(`"${r.trim()}" ${s.reason}`)}return{origins:e,errors:t}}function Je(n,e){if(!n||!(e!=null&&e.length))return ie;const t=e.map(r=>ye(r)).filter(r=>r.ok).map(r=>r.origin);return t.length>0?t.join(" "):ie}function Ge(){const n=new Uint8Array(16);return crypto.getRandomValues(n),Array.from(n,e=>e.toString(16).padStart(2,"0")).join("")}function qe(n,e,t){return`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="${["default-src 'none'",`script-src 'nonce-${n}' blob: 'unsafe-eval'`,"worker-src blob:",`connect-src ${Je(e,t)}`,"base-uri 'none'","form-action 'none'"].join("; ")}"></head><body><script nonce="${n}">
|
|
3
3
|
(function () {
|
|
4
4
|
var worker = null;
|
|
5
5
|
window.addEventListener('message', function (event) {
|
|
@@ -20,7 +20,7 @@ var je=Object.defineProperty;var ke=(n,e,t)=>e in n?je(n,e,{enumerable:!0,config
|
|
|
20
20
|
if (worker) worker.postMessage(message);
|
|
21
21
|
});
|
|
22
22
|
})();
|
|
23
|
-
<\/script></body></html>`}class Ne{constructor(e){S(this,"iframe");S(this,"ready");S(this,"listener");S(this,"disposed",!1);const t=Ge(),r=document.createElement("iframe");r.setAttribute("sandbox","allow-scripts"),r.setAttribute("aria-hidden","true"),r.setAttribute("title","Plugin sandbox"),r.tabIndex=-1,r.style.cssText="position:absolute;width:0;height:0;border:0;visibility:hidden;pointer-events:none;",this.iframe=r;let s=()=>{},o=()=>{};this.ready=new Promise((i,c)=>{s=i,o=c});const a=setTimeout(()=>{o(new Error("Plugin sandbox did not start"))},1e4);this.listener=i=>{if(i.source!==r.contentWindow)return;const c=i.data;if(!(!c||typeof c!="object")){if(c.type==="ready"){clearTimeout(a),s();return}if(c.type==="workerError"){e.onError(typeof c.message=="string"?c.message:"Worker error");return}e.onMessage(c)}},window.addEventListener("message",this.listener),r.addEventListener("load",()=>{var i;(i=r.contentWindow)==null||i.postMessage({type:"init",runtime:e.runtime},"*")}),r.srcdoc=qe(t,e.allowNetwork,e.networkOrigins),document.body.appendChild(r),this.ready.catch(()=>{})}async post(e){var t;if(await this.ready,this.disposed)throw new Error("Plugin sandbox was closed");(t=this.iframe.contentWindow)==null||t.postMessage(e,"*")}dispose(){this.disposed||(this.disposed=!0,window.removeEventListener("message",this.listener),this.iframe.remove())}}function I(n){return{allowNetwork:n.allowNetwork,networkOrigins:[...n.networkOrigins??[]].sort()}}function X(n,e){return n.allowNetwork===e.allowNetwork&&n.networkOrigins.length===e.networkOrigins.length&&n.networkOrigins.every((t,r)=>t===e.networkOrigins[r])}const Xe=8e3,Ye=2e4,Ke=3e4;class Y extends Error{constructor(e,t,r){super(`Plugin "${e}" did not finish ${t} within ${Math.round(r/1e3)}s and was stopped.`),this.name="PluginTimeoutError"}}class ae extends Error{constructor(e){super(`Plugin "${e}" render was cancelled`),this.name="PluginAbortedError"}}let O=null;function Ze(){return O||(O=b(()=>import("./_virtual_jto-sandbox-runtime-l26u1ylW.js"),[]).then(n=>n.default).catch(n=>{throw O=null,n})),O}function Qe(n,e){return n.js===e.js&&n.format===e.format&&X(I(n),I(e))&&JSON.stringify(n.examples)===JSON.stringify(e.examples)}class et{constructor(){S(this,"entries",new Map);S(this,"nextId",1)}async entry(e,t){const r=this.entries.get(e);if(r){if(X(r.policy,t))return r;this.dispose(e,new Error(`Plugin "${e}" network policy changed`))}const s=await Ze(),o=this.entries.get(e);if(o)return o;const a={frame:null,policy:t,loaded:null,pending:new Map,idleTimer:null};return a.frame=new Ne({runtime:s,allowNetwork:t.allowNetwork,networkOrigins:t.networkOrigins,onMessage:i=>{const c=i;if(!c||typeof c.id!="number")return;const u=a.pending.get(c.id);u&&(a.pending.delete(c.id),clearTimeout(u.timer),u.resolve(c),this.touch(e,a))},onError:i=>{this.dispose(e,new Error(`Plugin "${e}" crashed: ${i}`))}}),this.entries.set(e,a),a}touch(e,t){t.idleTimer&&clearTimeout(t.idleTimer),t.idleTimer=setTimeout(()=>{t.pending.size===0&&this.entries.get(e)===t&&this.dispose(e)},Ke)}async request(e,t,r,s,o,a){if(a!=null&&a.aborted)throw new ae(e);const i=await this.entry(e,t);i.idleTimer&&clearTimeout(i.idleTimer);const c=this.nextId++;return new Promise((l,p)=>{let m=null;const f=()=>{m&&(a==null||a.removeEventListener("abort",m)),m=null},w=setTimeout(()=>{i.pending.delete(c),f(),this.dispose(e,new Y(e,o,s)),p(new Y(e,o,s))},s);i.pending.set(c,{resolve:d=>{f(),l(d)},reject:d=>{f(),p(d)},timer:w}),m=()=>{this.dispose(e,new ae(e))},a==null||a.addEventListener("abort",m,{once:!0}),i.frame.post({id:c,...r}).catch(d=>{i.pending.delete(c),clearTimeout(w),f(),p(d instanceof Error?d:new Error(String(d)))})})}async load(e,t){const r=this.entries.get(e);r&&(!r.loaded||!Qe(r.loaded,t))&&this.dispose(e,new Error(`Plugin "${e}" was reloaded`));const s=await this.request(e,I(t),{type:"load",js:t.js,format:t.format,allowNetwork:t.allowNetwork,networkOrigins:t.networkOrigins??[],examples:t.examples},Xe,"loading");if(s.type==="error")throw this.dispose(e,new Error(s.message)),new Error(s.message);if(s.type!=="loaded")throw new Error(`Unexpected sandbox reply "${s.type}"`);const o=this.entries.get(e);return o&&(o.loaded=t),s.metadata}async render(e,t,r){const s=y.getState().records[e],o=I({allowNetwork:(s==null?void 0:s.allowNetwork)??!1,networkOrigins:s==null?void 0:s.networkOrigins}),a=this.entries.get(e);if(!a||!a.loaded||!X(a.policy,o)){if(!(s!=null&&s.js)||!s.metadata)throw new Error(`Plugin "${e}" is not compiled`);await this.load(e,{js:s.js,format:s.metadata.format,allowNetwork:s.allowNetwork,networkOrigins:s.networkOrigins,examples:s.metadata.examples})}const i=await this.request(e,o,{type:"render",version:t.version,props:t.props,theme:t.theme,children:t.children},Ye,"rendering",r);if(i.type==="error")throw new Error(i.message);if(i.type!=="rendered")throw new Error(`Unexpected sandbox reply "${i.type}"`);return{components:i.components,warnings:i.warnings}}dispose(e,t){const r=this.entries.get(e);if(r){this.entries.delete(e),r.idleTimer&&clearTimeout(r.idleTimer);for(const s of r.pending.values())clearTimeout(s.timer),s.reject(t??new Error(`Plugin "${e}" was unloaded`));r.pending.clear(),r.frame.dispose()}}isLoaded(e){var t;return((t=this.entries.get(e))==null?void 0:t.loaded)!=null}}const j=new et,tt=3,Se=".component.ts";function Te(n){return n.toLowerCase().endsWith(Se)}function Ft(n){const e=n.trim();return Te(e)?e:e.replace(/\.(component)?\.?ts$/i,"")+Se}function nt(n,e){var t;return((t=n.find(r=>r.name===e))==null?void 0:t.templateSource)??e}const ve=()=>({documents:[],openTabs:[],activeTab:"",buildErrors:{},documentTypes:{},pendingDiffs:{},acceptedApplyIds:[]}),rt={...ve()},st=(n=rt)=>V()(L(D(e=>({...n,createDocument:(t,r,s)=>e(o=>{if(o.documents.findIndex(i=>i.name===t)===-1){let i="application/json+report";if(Te(t))i="application/typescript+plugin";else if(t.toLowerCase().includes("theme")||t.toLowerCase().includes(".theme."))i="application/json+theme";else try{const u=JSON.parse(r);u.colors&&u.fonts&&u.styles&&(i="application/json+theme")}catch{}const c={name:t,type:i==="application/typescript+plugin"?"text/typescript":"application/json",text:r,mtime:new Date,ctime:new Date,atime:new Date,...s!=null&&s.templateSource?{templateSource:s.templateSource}:{}};return{documents:[...o.documents,c],documentTypes:{...o.documentTypes,[t]:i}}}return o}),deleteDocument:t=>e(r=>{const s={...r.documentTypes};return delete s[t],{documents:r.documents.filter(o=>o.name!==t),documentTypes:s,pendingDiffs:Object.fromEntries(Object.entries(r.pendingDiffs).filter(([o])=>o!==t))}}),saveDocument:(t,r)=>e(s=>{const o=s.documents.findIndex(i=>i.name===t);return o===-1||s.documents[o].text===r?s:{documents:s.documents.map((i,c)=>c===o?{...i,text:r,mtime:new Date}:i)}}),renameDocument:(t,r)=>e(s=>{const o=s.documents.findIndex(c=>c.name===t);if(o===-1)return s;const a=s.documents.map((c,u)=>u===o?{...c,name:r,ctime:new Date}:c),i=s.documentTypes[t];if(i){const c={...s.documentTypes};return delete c[t],c[r]=i,{documents:a,documentTypes:c}}return{documents:a}}),openDocument:t=>e(r=>{const s=r.documents.findIndex(i=>i.name===t);if(s===-1)return r;const o=r.documents.map((i,c)=>c===s?{...i,atime:new Date}:i);let a=r.openTabs;return a.includes(t)||(a=a.length>=tt?[...a.slice(1),t]:[...a,t]),{documents:o,openTabs:a,activeTab:t}}),closeDocument:t=>e(r=>{const s=r.openTabs.indexOf(t);if(s===-1)return r;const o=r.openTabs.filter(i=>i!==t);let a=r.activeTab;return a===t&&(o.length?a=s===0?o[0]:o[s-1]:a=""),{openTabs:o,activeTab:a}}),setActiveTab:t=>e({activeTab:t}),setBuildError:(t,r)=>e(s=>{if(s.buildErrors[t]===r)return s;const o={...s.buildErrors};return r?o[t]=r:delete o[t],{buildErrors:o}}),setPendingDiff:(t,r,s,o)=>e(a=>({pendingDiffs:{...a.pendingDiffs,[t]:{original:r,modified:s,applyId:o}}})),clearPendingDiff:(t,r)=>e(s=>{const o=s.pendingDiffs[t];if(!o)return s;const a={...s.pendingDiffs};delete a[t];const i=s.acceptedApplyIds||[],c=r&&o.applyId?[...i.slice(-199),o.applyId]:i;return{pendingDiffs:a,acceptedApplyIds:c}})}),{name:"documents-storage",version:1,storage:K(()=>ee),partialize:e=>({documents:e.documents,openTabs:e.openTabs,activeTab:e.activeTab,documentTypes:e.documentTypes}),onRehydrateStorage:()=>e=>{if(e!=null&&e.documents)for(const t of e.documents)for(const r of["mtime","ctime","atime"])t[r]&&typeof t[r]=="string"&&(t[r]=new Date(t[r]))}}))),H=g.createContext(void 0),zt=({children:n})=>{const e=g.useRef(null);return e.current||(e.current=st(ve())),v.jsx(H.Provider,{value:e.current,children:n})},Wt=n=>{const e=g.useContext(H);if(!e)throw new Error("useDocumentsStore must be used within DocumentsStoreProvider");return F(e,n)},Ht=()=>{const n=g.useContext(H);if(!n)throw new Error("useResolveSourceName must be used within DocumentsStoreProvider");return g.useCallback(e=>nt(n.getState().documents,e),[n])},Pe=()=>({name:void 0,text:void 0,blob:void 0,globalError:void 0,isGenerating:!1,generationProgress:void 0,isRendering:!1,isPreviewStale:!1,editSequence:0,lastBuiltSequence:0,hasValidationErrors:!1,quality:null}),ot={...Pe()},it=(n=ot)=>V()(L(e=>({...n,setOutput:t=>e({...t}),bumpEditSequence:()=>e(t=>({editSequence:(t.editSequence??0)+1,editTimestamp:Date.now()}))}))),xe=g.createContext(void 0),Ut=({children:n})=>{const e=g.useRef(null);return e.current||(e.current=it(Pe())),v.jsx(xe.Provider,{value:e.current,children:n})},Bt=n=>{const e=g.useContext(xe);if(!e)throw new Error("useOutputStore must be used within OutputStoreProvider");return F(e,n)},ce=me()(D((n,e)=>({selectedPlugins:new Set,selectedPluginMetadata:new Map,isApplyingPlugins:!1,lastApplyError:null,selectPlugin:t=>{n(r=>{const s=new Set(r.selectedPlugins),o=new Map(r.selectedPluginMetadata);return s.add(t.name),o.set(t.name,t),{selectedPlugins:s,selectedPluginMetadata:o}})},deselectPlugin:t=>{n(r=>{const s=new Set(r.selectedPlugins),o=new Map(r.selectedPluginMetadata);return s.delete(t),o.delete(t),{selectedPlugins:s,selectedPluginMetadata:o}})},togglePlugin:t=>{e().isPluginSelected(t.name)?e().deselectPlugin(t.name):e().selectPlugin(t),e().applyPluginsWithValidation().catch(console.error)},clearSelections:()=>{n({selectedPlugins:new Set,selectedPluginMetadata:new Map}),e().applyPluginsWithValidation().catch(console.error)},isPluginSelected:t=>e().selectedPlugins.has(t),getSelectedPluginsList:()=>Array.from(e().selectedPluginMetadata.values()),getSelectedPluginNames:()=>Array.from(e().selectedPlugins),applyPluginsWithValidation:async(t,r)=>{n({isApplyingPlugins:!0,lastApplyError:null});try{const s=Array.from(e().selectedPlugins),{loader:o}=await b(async()=>{const{loader:p}=await import("./monaco-editor-DJsdM0WK.js");return{loader:p}},__vite__mapDeps([0,1])),{updateMonacoWithPlugins:a}=await b(async()=>{const{updateMonacoWithPlugins:p}=await import("./index-CHWwrrUS.js").then(m=>m.G);return{updateMonacoWithPlugins:p}},__vite__mapDeps([2,1,3,4,5,0,6,7])),i=await o.init(),{browserComponentsForSchema:c,useBrowserPluginsStore:u}=await b(async()=>{const{browserComponentsForSchema:p,useBrowserPluginsStore:m}=await Promise.resolve().then(()=>He);return{browserComponentsForSchema:p,useBrowserPluginsStore:m}},void 0);if(!await a(i,s,void 0,c(u.getState())))throw new Error("Schema validation failed");return n({isApplyingPlugins:!1,lastApplyError:null}),t&&t(),!0}catch(s){const o=s instanceof Error?s.message:"Failed to apply plugin schemas";return n({isApplyingPlugins:!1,lastApplyError:o}),r&&r(o),console.error("Failed to apply plugins with validation:",s),!1}}}),{name:"jtp-selected-plugins",storage:{getItem:n=>{const e=localStorage.getItem(n);if(!e)return null;const{state:t}=JSON.parse(e);return{state:{...t,selectedPlugins:new Set(t.selectedPlugins||[]),selectedPluginMetadata:new Map(t.selectedPluginMetadata||[])}}},setItem:(n,e)=>{const{state:t}=e,r=JSON.stringify({state:{...t,selectedPlugins:Array.from(t.selectedPlugins),selectedPluginMetadata:Array.from(t.selectedPluginMetadata.entries())}});localStorage.setItem(n,r)},removeItem:n=>localStorage.removeItem(n)}}));function Ce(n,e,t){return`import type { TSchema } from '@sinclair/typebox';
|
|
23
|
+
<\/script></body></html>`}class Ne{constructor(e){S(this,"iframe");S(this,"ready");S(this,"listener");S(this,"disposed",!1);const t=Ge(),r=document.createElement("iframe");r.setAttribute("sandbox","allow-scripts"),r.setAttribute("aria-hidden","true"),r.setAttribute("title","Plugin sandbox"),r.tabIndex=-1,r.style.cssText="position:absolute;width:0;height:0;border:0;visibility:hidden;pointer-events:none;",this.iframe=r;let s=()=>{},o=()=>{};this.ready=new Promise((i,c)=>{s=i,o=c});const a=setTimeout(()=>{o(new Error("Plugin sandbox did not start"))},1e4);this.listener=i=>{if(i.source!==r.contentWindow)return;const c=i.data;if(!(!c||typeof c!="object")){if(c.type==="ready"){clearTimeout(a),s();return}if(c.type==="workerError"){e.onError(typeof c.message=="string"?c.message:"Worker error");return}e.onMessage(c)}},window.addEventListener("message",this.listener),r.addEventListener("load",()=>{var i;(i=r.contentWindow)==null||i.postMessage({type:"init",runtime:e.runtime},"*")}),r.srcdoc=qe(t,e.allowNetwork,e.networkOrigins),document.body.appendChild(r),this.ready.catch(()=>{})}async post(e){var t;if(await this.ready,this.disposed)throw new Error("Plugin sandbox was closed");(t=this.iframe.contentWindow)==null||t.postMessage(e,"*")}dispose(){this.disposed||(this.disposed=!0,window.removeEventListener("message",this.listener),this.iframe.remove())}}function I(n){return{allowNetwork:n.allowNetwork,networkOrigins:[...n.networkOrigins??[]].sort()}}function X(n,e){return n.allowNetwork===e.allowNetwork&&n.networkOrigins.length===e.networkOrigins.length&&n.networkOrigins.every((t,r)=>t===e.networkOrigins[r])}const Xe=8e3,Ye=2e4,Ke=3e4;class Y extends Error{constructor(e,t,r){super(`Plugin "${e}" did not finish ${t} within ${Math.round(r/1e3)}s and was stopped.`),this.name="PluginTimeoutError"}}class ae extends Error{constructor(e){super(`Plugin "${e}" render was cancelled`),this.name="PluginAbortedError"}}let O=null;function Ze(){return O||(O=b(()=>import("./_virtual_jto-sandbox-runtime-CH8UnjtH.js"),[]).then(n=>n.default).catch(n=>{throw O=null,n})),O}function Qe(n,e){return n.js===e.js&&n.format===e.format&&X(I(n),I(e))&&JSON.stringify(n.examples)===JSON.stringify(e.examples)}class et{constructor(){S(this,"entries",new Map);S(this,"nextId",1)}async entry(e,t){const r=this.entries.get(e);if(r){if(X(r.policy,t))return r;this.dispose(e,new Error(`Plugin "${e}" network policy changed`))}const s=await Ze(),o=this.entries.get(e);if(o)return o;const a={frame:null,policy:t,loaded:null,pending:new Map,idleTimer:null};return a.frame=new Ne({runtime:s,allowNetwork:t.allowNetwork,networkOrigins:t.networkOrigins,onMessage:i=>{const c=i;if(!c||typeof c.id!="number")return;const u=a.pending.get(c.id);u&&(a.pending.delete(c.id),clearTimeout(u.timer),u.resolve(c),this.touch(e,a))},onError:i=>{this.dispose(e,new Error(`Plugin "${e}" crashed: ${i}`))}}),this.entries.set(e,a),a}touch(e,t){t.idleTimer&&clearTimeout(t.idleTimer),t.idleTimer=setTimeout(()=>{t.pending.size===0&&this.entries.get(e)===t&&this.dispose(e)},Ke)}async request(e,t,r,s,o,a){if(a!=null&&a.aborted)throw new ae(e);const i=await this.entry(e,t);i.idleTimer&&clearTimeout(i.idleTimer);const c=this.nextId++;return new Promise((l,p)=>{let m=null;const f=()=>{m&&(a==null||a.removeEventListener("abort",m)),m=null},w=setTimeout(()=>{i.pending.delete(c),f(),this.dispose(e,new Y(e,o,s)),p(new Y(e,o,s))},s);i.pending.set(c,{resolve:d=>{f(),l(d)},reject:d=>{f(),p(d)},timer:w}),m=()=>{this.dispose(e,new ae(e))},a==null||a.addEventListener("abort",m,{once:!0}),i.frame.post({id:c,...r}).catch(d=>{i.pending.delete(c),clearTimeout(w),f(),p(d instanceof Error?d:new Error(String(d)))})})}async load(e,t){const r=this.entries.get(e);r&&(!r.loaded||!Qe(r.loaded,t))&&this.dispose(e,new Error(`Plugin "${e}" was reloaded`));const s=await this.request(e,I(t),{type:"load",js:t.js,format:t.format,allowNetwork:t.allowNetwork,networkOrigins:t.networkOrigins??[],examples:t.examples},Xe,"loading");if(s.type==="error")throw this.dispose(e,new Error(s.message)),new Error(s.message);if(s.type!=="loaded")throw new Error(`Unexpected sandbox reply "${s.type}"`);const o=this.entries.get(e);return o&&(o.loaded=t),s.metadata}async render(e,t,r){const s=y.getState().records[e],o=I({allowNetwork:(s==null?void 0:s.allowNetwork)??!1,networkOrigins:s==null?void 0:s.networkOrigins}),a=this.entries.get(e);if(!a||!a.loaded||!X(a.policy,o)){if(!(s!=null&&s.js)||!s.metadata)throw new Error(`Plugin "${e}" is not compiled`);await this.load(e,{js:s.js,format:s.metadata.format,allowNetwork:s.allowNetwork,networkOrigins:s.networkOrigins,examples:s.metadata.examples})}const i=await this.request(e,o,{type:"render",version:t.version,props:t.props,theme:t.theme,children:t.children},Ye,"rendering",r);if(i.type==="error")throw new Error(i.message);if(i.type!=="rendered")throw new Error(`Unexpected sandbox reply "${i.type}"`);return{components:i.components,warnings:i.warnings}}dispose(e,t){const r=this.entries.get(e);if(r){this.entries.delete(e),r.idleTimer&&clearTimeout(r.idleTimer);for(const s of r.pending.values())clearTimeout(s.timer),s.reject(t??new Error(`Plugin "${e}" was unloaded`));r.pending.clear(),r.frame.dispose()}}isLoaded(e){var t;return((t=this.entries.get(e))==null?void 0:t.loaded)!=null}}const j=new et,tt=3,Se=".component.ts";function Te(n){return n.toLowerCase().endsWith(Se)}function Ft(n){const e=n.trim();return Te(e)?e:e.replace(/\.(component)?\.?ts$/i,"")+Se}function nt(n,e){var t;return((t=n.find(r=>r.name===e))==null?void 0:t.templateSource)??e}const ve=()=>({documents:[],openTabs:[],activeTab:"",buildErrors:{},documentTypes:{},pendingDiffs:{},acceptedApplyIds:[]}),rt={...ve()},st=(n=rt)=>V()(L(D(e=>({...n,createDocument:(t,r,s)=>e(o=>{if(o.documents.findIndex(i=>i.name===t)===-1){let i="application/json+report";if(Te(t))i="application/typescript+plugin";else if(t.toLowerCase().includes("theme")||t.toLowerCase().includes(".theme."))i="application/json+theme";else try{const u=JSON.parse(r);u.colors&&u.fonts&&u.styles&&(i="application/json+theme")}catch{}const c={name:t,type:i==="application/typescript+plugin"?"text/typescript":"application/json",text:r,mtime:new Date,ctime:new Date,atime:new Date,...s!=null&&s.templateSource?{templateSource:s.templateSource}:{}};return{documents:[...o.documents,c],documentTypes:{...o.documentTypes,[t]:i}}}return o}),deleteDocument:t=>e(r=>{const s={...r.documentTypes};return delete s[t],{documents:r.documents.filter(o=>o.name!==t),documentTypes:s,pendingDiffs:Object.fromEntries(Object.entries(r.pendingDiffs).filter(([o])=>o!==t))}}),saveDocument:(t,r)=>e(s=>{const o=s.documents.findIndex(i=>i.name===t);return o===-1||s.documents[o].text===r?s:{documents:s.documents.map((i,c)=>c===o?{...i,text:r,mtime:new Date}:i)}}),renameDocument:(t,r)=>e(s=>{const o=s.documents.findIndex(c=>c.name===t);if(o===-1)return s;const a=s.documents.map((c,u)=>u===o?{...c,name:r,ctime:new Date}:c),i=s.documentTypes[t];if(i){const c={...s.documentTypes};return delete c[t],c[r]=i,{documents:a,documentTypes:c}}return{documents:a}}),openDocument:t=>e(r=>{const s=r.documents.findIndex(i=>i.name===t);if(s===-1)return r;const o=r.documents.map((i,c)=>c===s?{...i,atime:new Date}:i);let a=r.openTabs;return a.includes(t)||(a=a.length>=tt?[...a.slice(1),t]:[...a,t]),{documents:o,openTabs:a,activeTab:t}}),closeDocument:t=>e(r=>{const s=r.openTabs.indexOf(t);if(s===-1)return r;const o=r.openTabs.filter(i=>i!==t);let a=r.activeTab;return a===t&&(o.length?a=s===0?o[0]:o[s-1]:a=""),{openTabs:o,activeTab:a}}),setActiveTab:t=>e({activeTab:t}),setBuildError:(t,r)=>e(s=>{if(s.buildErrors[t]===r)return s;const o={...s.buildErrors};return r?o[t]=r:delete o[t],{buildErrors:o}}),setPendingDiff:(t,r,s,o)=>e(a=>({pendingDiffs:{...a.pendingDiffs,[t]:{original:r,modified:s,applyId:o}}})),clearPendingDiff:(t,r)=>e(s=>{const o=s.pendingDiffs[t];if(!o)return s;const a={...s.pendingDiffs};delete a[t];const i=s.acceptedApplyIds||[],c=r&&o.applyId?[...i.slice(-199),o.applyId]:i;return{pendingDiffs:a,acceptedApplyIds:c}})}),{name:"documents-storage",version:1,storage:K(()=>ee),partialize:e=>({documents:e.documents,openTabs:e.openTabs,activeTab:e.activeTab,documentTypes:e.documentTypes}),onRehydrateStorage:()=>e=>{if(e!=null&&e.documents)for(const t of e.documents)for(const r of["mtime","ctime","atime"])t[r]&&typeof t[r]=="string"&&(t[r]=new Date(t[r]))}}))),H=g.createContext(void 0),zt=({children:n})=>{const e=g.useRef(null);return e.current||(e.current=st(ve())),v.jsx(H.Provider,{value:e.current,children:n})},Wt=n=>{const e=g.useContext(H);if(!e)throw new Error("useDocumentsStore must be used within DocumentsStoreProvider");return F(e,n)},Ht=()=>{const n=g.useContext(H);if(!n)throw new Error("useResolveSourceName must be used within DocumentsStoreProvider");return g.useCallback(e=>nt(n.getState().documents,e),[n])},Pe=()=>({name:void 0,text:void 0,blob:void 0,globalError:void 0,isGenerating:!1,generationProgress:void 0,isRendering:!1,isPreviewStale:!1,editSequence:0,lastBuiltSequence:0,hasValidationErrors:!1,quality:null}),ot={...Pe()},it=(n=ot)=>V()(L(e=>({...n,setOutput:t=>e({...t}),bumpEditSequence:()=>e(t=>({editSequence:(t.editSequence??0)+1,editTimestamp:Date.now()}))}))),xe=g.createContext(void 0),Ut=({children:n})=>{const e=g.useRef(null);return e.current||(e.current=it(Pe())),v.jsx(xe.Provider,{value:e.current,children:n})},Bt=n=>{const e=g.useContext(xe);if(!e)throw new Error("useOutputStore must be used within OutputStoreProvider");return F(e,n)},ce=me()(D((n,e)=>({selectedPlugins:new Set,selectedPluginMetadata:new Map,isApplyingPlugins:!1,lastApplyError:null,selectPlugin:t=>{n(r=>{const s=new Set(r.selectedPlugins),o=new Map(r.selectedPluginMetadata);return s.add(t.name),o.set(t.name,t),{selectedPlugins:s,selectedPluginMetadata:o}})},deselectPlugin:t=>{n(r=>{const s=new Set(r.selectedPlugins),o=new Map(r.selectedPluginMetadata);return s.delete(t),o.delete(t),{selectedPlugins:s,selectedPluginMetadata:o}})},togglePlugin:t=>{e().isPluginSelected(t.name)?e().deselectPlugin(t.name):e().selectPlugin(t),e().applyPluginsWithValidation().catch(console.error)},clearSelections:()=>{n({selectedPlugins:new Set,selectedPluginMetadata:new Map}),e().applyPluginsWithValidation().catch(console.error)},isPluginSelected:t=>e().selectedPlugins.has(t),getSelectedPluginsList:()=>Array.from(e().selectedPluginMetadata.values()),getSelectedPluginNames:()=>Array.from(e().selectedPlugins),applyPluginsWithValidation:async(t,r)=>{n({isApplyingPlugins:!0,lastApplyError:null});try{const s=Array.from(e().selectedPlugins),{loader:o}=await b(async()=>{const{loader:p}=await import("./monaco-editor-DJsdM0WK.js");return{loader:p}},__vite__mapDeps([0,1])),{updateMonacoWithPlugins:a}=await b(async()=>{const{updateMonacoWithPlugins:p}=await import("./index-BiJMw-wa.js").then(m=>m.G);return{updateMonacoWithPlugins:p}},__vite__mapDeps([2,1,3,4,5,0,6,7])),i=await o.init(),{browserComponentsForSchema:c,useBrowserPluginsStore:u}=await b(async()=>{const{browserComponentsForSchema:p,useBrowserPluginsStore:m}=await Promise.resolve().then(()=>He);return{browserComponentsForSchema:p,useBrowserPluginsStore:m}},void 0);if(!await a(i,s,void 0,c(u.getState())))throw new Error("Schema validation failed");return n({isApplyingPlugins:!1,lastApplyError:null}),t&&t(),!0}catch(s){const o=s instanceof Error?s.message:"Failed to apply plugin schemas";return n({isApplyingPlugins:!1,lastApplyError:o}),r&&r(o),console.error("Failed to apply plugins with validation:",s),!1}}}),{name:"jtp-selected-plugins",storage:{getItem:n=>{const e=localStorage.getItem(n);if(!e)return null;const{state:t}=JSON.parse(e);return{state:{...t,selectedPlugins:new Set(t.selectedPlugins||[]),selectedPluginMetadata:new Map(t.selectedPluginMetadata||[])}}},setItem:(n,e)=>{const{state:t}=e,r=JSON.stringify({state:{...t,selectedPlugins:Array.from(t.selectedPlugins),selectedPluginMetadata:Array.from(t.selectedPluginMetadata.entries())}});localStorage.setItem(n,r)},removeItem:n=>localStorage.removeItem(n)}}));function Ce(n,e,t){return`import type { TSchema } from '@sinclair/typebox';
|
|
24
24
|
import type { ${e}, ${t} } from '${n}';
|
|
25
25
|
import type {
|
|
26
26
|
RenderContext as SharedRenderContext,
|
|
@@ -79,7 +79,7 @@ export {
|
|
|
79
79
|
DuplicateComponentError,
|
|
80
80
|
} from '@json-to-office/shared/plugin';
|
|
81
81
|
export type { ${e}, ${t} } from '${n}';
|
|
82
|
-
`}const J=Ce("@json-to-office/shared-docx","ComponentDefinition","ThemeConfigJson"),G=Ce("@json-to-office/shared-pptx","PptxComponentDefinition","ThemeConfigJson");function k(n,e){return JSON.stringify({name:n,version:"0.0.0-playground",types:"index.d.ts",exports:{".":{types:"./index.d.ts"},...e?{"./plugin":{types:"./plugin/index.d.ts"}}:{}}},null,2)}const at={"node_modules/@json-to-office/core-docx/package.json":k("@json-to-office/core-docx",!0),"node_modules/@json-to-office/core-docx/index.d.ts":J,"node_modules/@json-to-office/core-docx/plugin/index.d.ts":J,"node_modules/@json-to-office/json-to-docx/package.json":k("@json-to-office/json-to-docx",!1),"node_modules/@json-to-office/json-to-docx/index.d.ts":J,"node_modules/@json-to-office/core-pptx/package.json":k("@json-to-office/core-pptx",!0),"node_modules/@json-to-office/core-pptx/index.d.ts":G,"node_modules/@json-to-office/core-pptx/plugin/index.d.ts":G,"node_modules/@json-to-office/json-to-pptx/package.json":k("@json-to-office/json-to-pptx",!1),"node_modules/@json-to-office/json-to-pptx/index.d.ts":G};let M=null;function ct(n){return M||(M=ut(n).then(lt).catch(e=>{throw M=null,e})),M}async function ut(n){const e=n.languages.typescript;e.typescriptDefaults.setCompilerOptions({target:e.ScriptTarget.ES2020,module:e.ModuleKind.CommonJS,moduleResolution:100,lib:["es2020","dom"],strict:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,allowNonTsExtensions:!0,skipLibCheck:!0,noEmitOnError:!1,resolveJsonModule:!1,typeRoots:[],types:[]}),e.typescriptDefaults.setDiagnosticsOptions({noSemanticValidation:!0,noSyntaxValidation:!1,noSuggestionDiagnostics:!0}),e.typescriptDefaults.setEagerModelSync(!0);const r={...(await b(async()=>{const{default:s}=await import("./_virtual_jto-plugin-type-libs-
|
|
82
|
+
`}const J=Ce("@json-to-office/shared-docx","ComponentDefinition","ThemeConfigJson"),G=Ce("@json-to-office/shared-pptx","PptxComponentDefinition","ThemeConfigJson");function k(n,e){return JSON.stringify({name:n,version:"0.0.0-playground",types:"index.d.ts",exports:{".":{types:"./index.d.ts"},...e?{"./plugin":{types:"./plugin/index.d.ts"}}:{}}},null,2)}const at={"node_modules/@json-to-office/core-docx/package.json":k("@json-to-office/core-docx",!0),"node_modules/@json-to-office/core-docx/index.d.ts":J,"node_modules/@json-to-office/core-docx/plugin/index.d.ts":J,"node_modules/@json-to-office/json-to-docx/package.json":k("@json-to-office/json-to-docx",!1),"node_modules/@json-to-office/json-to-docx/index.d.ts":J,"node_modules/@json-to-office/core-pptx/package.json":k("@json-to-office/core-pptx",!0),"node_modules/@json-to-office/core-pptx/index.d.ts":G,"node_modules/@json-to-office/core-pptx/plugin/index.d.ts":G,"node_modules/@json-to-office/json-to-pptx/package.json":k("@json-to-office/json-to-pptx",!1),"node_modules/@json-to-office/json-to-pptx/index.d.ts":G};let M=null;function ct(n){return M||(M=ut(n).then(lt).catch(e=>{throw M=null,e})),M}async function ut(n){const e=n.languages.typescript;e.typescriptDefaults.setCompilerOptions({target:e.ScriptTarget.ES2020,module:e.ModuleKind.CommonJS,moduleResolution:100,lib:["es2020","dom"],strict:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,allowNonTsExtensions:!0,skipLibCheck:!0,noEmitOnError:!1,resolveJsonModule:!1,typeRoots:[],types:[]}),e.typescriptDefaults.setDiagnosticsOptions({noSemanticValidation:!0,noSyntaxValidation:!1,noSuggestionDiagnostics:!0}),e.typescriptDefaults.setEagerModelSync(!0);const r={...(await b(async()=>{const{default:s}=await import("./_virtual_jto-plugin-type-libs-BWCUBp-C.js");return{default:s}},[])).default,...at};for(const[s,o]of Object.entries(r))e.typescriptDefaults.addExtraLib(o,`file:///${s}`);e.typescriptDefaults.setDiagnosticsOptions({noSemanticValidation:!1,noSyntaxValidation:!1,noSuggestionDiagnostics:!0})}function Jt(){return te}let te=!1;const $=new Set;function Gt(n){return te?(n(),()=>{}):($.add(n),()=>{$.delete(n)})}function lt(){te=!0;for(const n of $)n();$.clear()}const dt="file:///plugins/";function be(n){return`${dt}${encodeURIComponent(n)}`}function Ee(n,e){return n.editor.getEditors().some(t=>t.getModel()===e)}function pt(n){if(typeof n=="string")return n;const e=[n.messageText],t=Array.isArray(n.next)?[...n.next]:[];for(;t.length>0;){const r=t.shift();r&&(typeof r=="string"?e.push(r):(e.push(r.messageText),Array.isArray(r.next)&&t.push(...r.next)))}return e.join(" ")}function mt(n,e){const r={severity:n.category===1?"error":n.category===0?"warning":"info",message:`${pt(n.messageText)} (TS${n.code})`,source:"typescript"};if(typeof n.start=="number"){const s=e.getPositionAt(n.start),o=e.getPositionAt(n.start+(n.length??0));r.line=s.lineNumber,r.column=s.column,r.endLine=o.lineNumber,r.endColumn=o.column}return r}async function ft(n,e,t){var h;const r=await Z.init();await ct(r);const s=r.Uri.parse(be(n));let o=r.editor.getModel(s);o?o.getValue()!==e&&!Ee(r,o)&&o.setValue(e):o=r.editor.createModel(e,"typescript",s);const a=o.getValue();if(t!==void 0&&E(a)===t)return{source:a,js:null,diagnostics:[],skipped:!0};const c=await(await r.languages.typescript.getTypeScriptWorker())(s),u=s.toString(),[l,p,m]=await Promise.all([c.getSyntacticDiagnostics(u),c.getSemanticDiagnostics(u),c.getEmitOutput(u)]),f=[...l,...p].map(T=>mt(T,o)).filter(T=>T.severity!=="info"),w=f.some(T=>T.severity==="error"),d=((h=m.outputFiles.find(T=>T.name.endsWith(".js")))==null?void 0:h.text)??null;return{source:a,js:w?null:d,diagnostics:f,skipped:!1}}function gt(n){const e=Z.__getMonacoInstance();if(!e)return;const t=e.editor.getModel(e.Uri.parse(be(n)));t&&!Ee(e,t)&&t.dispose()}const ue=async()=>{};class ht{constructor(){S(this,"runner",ue);S(this,"timers",new Map);S(this,"inFlight",new Map);S(this,"queued",new Set);S(this,"idleWaiters",[])}setRunner(e){this.runner=e}schedule(e,t){this.cancel(e),this.timers.set(e,setTimeout(()=>{this.timers.delete(e),this.run(e)},t))}cancel(e){const t=this.timers.get(e);t&&clearTimeout(t),this.timers.delete(e)}run(e){this.cancel(e);const t=this.inFlight.get(e);if(t)return this.queued.add(e),t.then(()=>this.inFlight.get(e)??Promise.resolve());const r=this.runner(e).catch(()=>{}).finally(()=>{this.inFlight.delete(e),this.queued.delete(e)?this.run(e):this.settleIfIdle()});return this.inFlight.set(e,r),r}flush(){for(const e of Array.from(this.timers.keys()))this.run(e)}get isIdle(){return this.timers.size===0&&this.inFlight.size===0}whenIdle(e=15e3){return this.isIdle?Promise.resolve():new Promise(t=>{const r=setTimeout(s,e);function s(){clearTimeout(r),t()}this.idleWaiters.push(s)})}reset(){for(const e of this.timers.values())clearTimeout(e);this.timers.clear(),this.queued.clear(),this.runner=ue,this.settleIfIdle()}settleIfIdle(){if(!this.isIdle)return;const e=this.idleWaiters;this.idleWaiters=[];for(const t of e)t()}}const _=new ht;function wt(n){var a;const e=[],t=i=>i&&typeof i=="object"&&"props"in i?i.props:i,r=/@example\s*(?:<caption>(.*?)<\/caption>)?\s*\*?\s*```(?:json|typescript|ts)?\s*([\s\S]*?)```/gi;let s;for(;(s=r.exec(n))!==null;){const i=((a=s[1])==null?void 0:a.trim())||void 0,c=s[2].split(`
|
|
83
83
|
`).map(l=>l.replace(/^\s*\*\s?/,"")).join(`
|
|
84
84
|
`).trim(),u=c.match(/\{[\s\S]*\}/);if(u)try{e.push({title:i,props:t(JSON.parse(u[0]))})}catch{const l=c.match(/props:\s*\{[\s\S]*?\}/);if(!l)continue;try{const p=l[0].replace(/props:\s*/,"").replace(/(['"])?([a-zA-Z0-9_]+)(['"])?:/g,'"$2":').replace(/'/g,'"').replace(/,(\s*[}\]])/g,"$1").replace(/,\s*$/,"");e.push({title:i,props:JSON.parse(p)})}catch{}}}const o=/\/\/\s*Example:\s*(\{.*?\})/g;for(;(s=o.exec(n))!==null;)try{e.push({props:t(JSON.parse(s[1]))})}catch{}return e}function yt(n){const e=n==="docx"?Me:_e;return new Set(e.map(t=>t.name))}const St=/^[a-zA-Z][a-zA-Z0-9_-]*$/,le="[plugin-network-off]",Tt=400,vt="application/typescript+plugin",Pt="browser-plugins:changed";function A(n){window.dispatchEvent(new CustomEvent(Pt,{detail:{docName:n}}))}function de(n){return{severity:"error",source:"playground",code:"name-conflict",message:n}}function xt(n){const e=n instanceof Error?n.message:String(n);return e.includes(le)?{severity:"error",source:"playground",code:"network-off",message:e.replace(le,"").trim()}:n instanceof Y?{severity:"error",source:"sandbox",code:"timeout",message:`${e} Edit the file to compile it again.`}:{severity:"error",source:"sandbox",message:e}}function Ct(n){const e=g.useContext(H);if(!e)throw new Error("useBrowserPluginsSync must be used within DocumentsStoreProvider");const t=g.useRef(n);t.current=n,g.useEffect(()=>{let r=!1;const s=(u,l)=>{if(!St.test(l))return`Component name "${l}" must start with a letter and contain only letters, digits, "-" and "_".`;if(yt(U).has(l))return`"${l}" is a built-in ${U} component; choose another name.`;if(t.current.includes(l))return`"${l}" is already provided by a plugin on disk; choose another name or disable that plugin.`;const p=we(y.getState().records,l);return p&&p!==u?`"${l}" is already defined by ${p}; rename one of them.`:null},o=()=>{const u=y.getState();for(const l of Object.values(u.records)){if(!l.metadata||l.status==="compiling"||l.status==="idle")continue;const p=l.diagnostics.filter(d=>d.code!=="name-conflict"),m=p.length!==l.diagnostics.length,f=s(l.docName,l.metadata.name),w=p.some(d=>d.severity==="error");f&&!m?u.upsert(l.docName,{status:"error",diagnostics:[...p,de(f)]}):!f&&m&&(u.upsert(l.docName,{status:w||!l.js?"error":"ready",diagnostics:p}),A(l.docName))}},a=async u=>{const l=e.getState().documents.find(h=>h.name===u);if(!l||r)return;const p=y.getState(),m=p.records[u],f=E(l.text);if(m&&m.sourceHash===f&&(m.status==="ready"||m.status==="error"))return;const d=m&&(m.status==="ready"||m.status==="error")?m:void 0;p.upsert(u,{status:"compiling",sourceHash:f,diagnostics:[]});try{const h=await ft(u,l.text,d==null?void 0:d.sourceHash);if(r)return;if(h.skipped&&d){y.getState().upsert(u,{status:d.status,sourceHash:d.sourceHash,diagnostics:d.diagnostics});return}const T=E(h.source);if(!h.js){j.dispose(u),y.getState().upsert(u,{status:"error",sourceHash:T,js:void 0,metadata:void 0,diagnostics:h.diagnostics}),A(u);return}const x=y.getState().records[u],ne=await j.load(u,{js:h.js,format:U,allowNetwork:(x==null?void 0:x.allowNetwork)??!1,networkOrigins:x==null?void 0:x.networkOrigins,examples:wt(h.source)});if(r)return;y.getState().upsert(u,{status:"ready",sourceHash:T,js:h.js,metadata:ne,diagnostics:h.diagnostics});const re=s(u,ne.name);re&&y.getState().upsert(u,{status:"error",diagnostics:[...h.diagnostics,de(re)]}),o(),A(u)}catch(h){if(r)return;j.dispose(u),y.getState().upsert(u,{status:"error",sourceHash:f,js:void 0,metadata:void 0,diagnostics:[xt(h)]}),o(),A(u)}},i=()=>{const{documents:u,documentTypes:l}=e.getState(),p=u.filter(d=>l[d.name]===vt),m=new Set(p.map(d=>d.name)),f=y.getState();let w=!1;for(const d of Object.keys(f.records))m.has(d)||(f.remove(d),j.dispose(d),gt(d),_.cancel(d),w=!0);w&&o();for(const d of p){const h=f.records[d.name];(!h||h.sourceHash!==E(d.text)||h.status==="idle"||h.status==="compiling")&&_.schedule(d.name,Tt)}};_.setRunner(a);let c;return ge().then(()=>{r||(i(),c=e.subscribe((u,l)=>{(u.documents!==l.documents||u.documentTypes!==l.documentTypes)&&i()}))}),()=>{r=!0,c==null||c(),_.reset()}},[e])}const De=()=>({saveDocumentDebounceWait:300,useGlobalPreviewHeader:!0,qualityGate:"none",qualityMinSeverity:"warning"}),bt={...De()},Et=(n=bt)=>V()(L(D(e=>({...n,setSettings:t=>e({...t})}),{name:"settings-storage"}))),Oe=g.createContext(void 0),qt=({children:n})=>{const e=g.useRef(null);return e.current||(e.current=Et(De())),v.jsx(Oe.Provider,{value:e.current,children:n})},Nt=n=>{const e=g.useContext(Oe);if(!e)throw new Error("useSettingsStore must be used within SettingsStoreProvider");return F(e,n)};function Xt({diskPluginNames:n,children:e}){return Ct(n),v.jsx(v.Fragment,{children:e})}const pe=[],Dt=()=>()=>{};function Ot(){const n=g.useContext(W),e=g.useRef(pe),t=n?()=>{const r=n.getState().getAllThemeNames();return(r.length!==e.current.length||r.some((s,o)=>s!==e.current[o]))&&(e.current=r),e.current}:()=>pe;return g.useSyncExternalStore(n?n.subscribe:Dt,t)}function jt(){const n=g.useRef(null),e=ce(l=>l.selectedPlugins),t=Array.from(e),r=Ot(),s=y(N),o=g.useContext(W),a=g.useRef(o);a.current=o;const i=g.useRef([]),c=g.useRef([]),u=g.useRef("");return g.useEffect(()=>{Z.init().then(l=>{var w;n.current=l;const p=Array.from(ce.getState().selectedPlugins),m=((w=a.current)==null?void 0:w.getState().getAllThemeNames())??[],f=y.getState();se(l,p,m,R(f)).then(d=>{d?console.log("[useMonacoPlugins] Monaco initialized with plugins:",p):console.warn("[useMonacoPlugins] Monaco initialization completed with warnings")}).catch(d=>{console.error("[useMonacoPlugins] Failed to update Monaco with plugins:",d)}),i.current=[...p],c.current=[...m],u.current=N(f)}).catch(l=>{console.error("Failed to initialize Monaco:",l)})},[]),g.useEffect(()=>{const l=t.length!==i.current.length||t.some((f,w)=>f!==i.current[w]),p=r.length!==c.current.length||r.some((f,w)=>f!==c.current[w]),m=s!==u.current;!l&&!p&&!m||n.current&&(se(n.current,t,r,R(y.getState())).catch(f=>{console.error("[useMonacoPlugins] Failed to update Monaco schemas:",f)}),i.current=[...t],c.current=[...r],u.current=s)},[t,r,s]),{monaco:n.current,selectedPlugins:t}}function Yt({children:n}){return jt(),v.jsx(v.Fragment,{children:n})}export{Pt as B,zt as D,Yt as M,Ut as O,Se as P,qt as S,W as T,Wt as a,Vt as b,Ft as c,Bt as d,ce as e,Nt as f,Re as g,Ht as h,ee as i,N as j,R as k,$t as l,Xt as m,_ as n,Jt as o,j as p,Gt as q,Lt as r,he as s,ct as t,y as u,It as v,be as w,xe as x,H as y,oe as z};
|
|
85
|
-
//# sourceMappingURL=MonacoPluginProvider-
|
|
85
|
+
//# sourceMappingURL=MonacoPluginProvider-BRnOmPV0.js.map
|