@json-to-office/jto 0.1.1 → 0.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 (52) hide show
  1. package/dist/cli.js +234 -49
  2. package/dist/cli.js.map +1 -1
  3. package/dist/client/assets/HomePage-DX_EbLqY.js +99 -0
  4. package/dist/client/assets/HomePage-DX_EbLqY.js.map +1 -0
  5. package/dist/client/assets/JsonEditorPage-C8a43kG2.js +3 -0
  6. package/dist/client/assets/JsonEditorPage-C8a43kG2.js.map +1 -0
  7. package/dist/client/assets/MonacoPluginProvider-C_k1zpkx.js +3 -0
  8. package/dist/client/assets/MonacoPluginProvider-C_k1zpkx.js.map +1 -0
  9. package/dist/client/assets/{NotFoundPage-Et1QhbQw.js → NotFoundPage-ILCklaD-.js} +2 -2
  10. package/dist/client/assets/{NotFoundPage-Et1QhbQw.js.map → NotFoundPage-ILCklaD-.js.map} +1 -1
  11. package/dist/client/assets/{button-CMkwEplC.js → button-DLt0WPRa.js} +2 -2
  12. package/dist/client/assets/{button-CMkwEplC.js.map → button-DLt0WPRa.js.map} +1 -1
  13. package/dist/client/assets/{docx-preview-CUjVWdSJ.js → docx-preview-DkKCgwb-.js} +2 -2
  14. package/dist/client/assets/{docx-preview-CUjVWdSJ.js.map → docx-preview-DkKCgwb-.js.map} +1 -1
  15. package/dist/client/assets/{editor-CtwF-qwA.js → editor-LsSIrw3S.js} +2 -2
  16. package/dist/client/assets/{editor-CtwF-qwA.js.map → editor-LsSIrw3S.js.map} +1 -1
  17. package/dist/client/assets/editor-monaco-json-CTzuM8w2.js +6 -0
  18. package/dist/client/assets/{editor-monaco-json-DHRbpQ-v.js.map → editor-monaco-json-CTzuM8w2.js.map} +1 -1
  19. package/dist/client/assets/index-Cph82KFG.css +1 -0
  20. package/dist/client/assets/index-CslfgN2g.js +3 -0
  21. package/dist/client/assets/index-CslfgN2g.js.map +1 -0
  22. package/dist/client/assets/{monaco-editor-DzeBDgmk.js → monaco-editor-B-NlkJ5A.js} +2 -2
  23. package/dist/client/assets/{monaco-editor-DzeBDgmk.js.map → monaco-editor-B-NlkJ5A.js.map} +1 -1
  24. package/dist/client/assets/preview-CeZ8u4Ec.js +3 -0
  25. package/dist/client/assets/{preview-38guLS86.js.map → preview-CeZ8u4Ec.js.map} +1 -1
  26. package/dist/client/assets/{query-vendor-UL64zsGL.js → query-vendor-CT0SoqJh.js} +2 -2
  27. package/dist/client/assets/{query-vendor-UL64zsGL.js.map → query-vendor-CT0SoqJh.js.map} +1 -1
  28. package/dist/client/assets/{radix-ui-CXavUarI.js → radix-ui-DkKm4m5M.js} +2 -2
  29. package/dist/client/assets/{radix-ui-CXavUarI.js.map → radix-ui-DkKm4m5M.js.map} +1 -1
  30. package/dist/client/assets/{react-vendor-DhdcN9D5.js → react-vendor-B_QXlk-T.js} +4 -4
  31. package/dist/client/assets/{react-vendor-DhdcN9D5.js.map → react-vendor-B_QXlk-T.js.map} +1 -1
  32. package/dist/client/assets/{state-vendor-CAMVKh-F.js → state-vendor-Az8redj0.js} +3 -3
  33. package/dist/client/assets/{state-vendor-CAMVKh-F.js.map → state-vendor-Az8redj0.js.map} +1 -1
  34. package/dist/client/assets/{ui-vendor-C6DsfOoA.js → ui-vendor-ChWVh3T-.js} +48 -43
  35. package/dist/client/assets/ui-vendor-ChWVh3T-.js.map +1 -0
  36. package/dist/client/index.html +7 -8
  37. package/dist/index.d.ts +8 -3
  38. package/dist/index.js +110 -19
  39. package/dist/index.js.map +1 -1
  40. package/package.json +6 -6
  41. package/dist/client/assets/HomePage-D9PVR0H8.js +0 -99
  42. package/dist/client/assets/HomePage-D9PVR0H8.js.map +0 -1
  43. package/dist/client/assets/JsonEditorPage-bCBt1A49.js +0 -3
  44. package/dist/client/assets/JsonEditorPage-bCBt1A49.js.map +0 -1
  45. package/dist/client/assets/editor-monaco-json-DHRbpQ-v.js +0 -6
  46. package/dist/client/assets/index-B9dV-vCI.css +0 -1
  47. package/dist/client/assets/index-CGQAncgl.js +0 -3
  48. package/dist/client/assets/index-CGQAncgl.js.map +0 -1
  49. package/dist/client/assets/preview-38guLS86.js +0 -3
  50. package/dist/client/assets/settings-store-provider-BEzje7_o.js +0 -2
  51. package/dist/client/assets/settings-store-provider-BEzje7_o.js.map +0 -1
  52. package/dist/client/assets/ui-vendor-C6DsfOoA.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import{j as B}from"./query-vendor-UL64zsGL.js";import{a as Q,r as y}from"./react-vendor-DhdcN9D5.js";import{u as re,g as ce,c as le,d as he,E as pe}from"./editor-monaco-json-DHRbpQ-v.js";import{g as be}from"./index-CGQAncgl.js";import Ce,{DiffEditor as Ee}from"./monaco-editor-DzeBDgmk.js";import{u as X,v as we,a as ge,b as ye,d as Re,e as ve,f as Te,c as oe,t as Se}from"./settings-store-provider-BEzje7_o.js";import{B as ue}from"./button-CMkwEplC.js";import{T as Me,u as Le,a as Ne}from"./HomePage-D9PVR0H8.js";import{e as de}from"./state-vendor-CAMVKh-F.js";import"./radix-ui-CXavUarI.js";import"./ui-vendor-C6DsfOoA.js";const De={initWith:function(e){const T=document.createElement("div"),d=e.editor.create(T),M=d.constructor.name,V=d.getModel().constructor.name;return{isInstanceValid:function(a){return a.constructor.name===M},isModelValid:function(a){return a.constructor.name===V},isRangesValid:function(a){return Array.isArray(a)?a.every(function(w){return typeof w=="object"&&w.constructor.name==="Object"?!(!w.hasOwnProperty("range")||!Array.isArray(w.range)||w.range.length!==4||!w.range.every(b=>b>0&&parseInt(b)===b)||w.hasOwnProperty("allowMultiline")&&typeof w.allowMultiline!="boolean"||w.hasOwnProperty("label")&&typeof w.label!="string"||w.hasOwnProperty("validate")&&typeof w.validate!="function"):!1}):!1}}}},ne=function(e,T,d){return"The value for the "+T+" should be of type "+(Array.isArray(e)?e.join(" | "):e)+". "+(d||"")},se=function(){const e=function(l,_){return typeof l!="object"||l===null?this.freeze?Object.freeze(l):l:l instanceof Date?this.freeze?Object.freeze(new Date(l)):new Date(l):_.call(this,l)},T=function(l,_){const a=Object.keys(l),w=new Array(a.length);for(let b=0;b<a.length;b++)w[a[b]]=e.call(this,l[a[b]],_);return w},d=function(l){return e.call(this,l,function(_){if(Array.isArray(_))return T.call(this,_,d);const a={};for(let w in _)!this.withProto&&Object.hasOwnProperty.call(_,w)===!1||(a[w]=e.call(this,_[w],d));return a})},M=function(){const l=function(a){const w=["withProto","freeze"];this[a]=w.reduce((function(b,R){return(b[R]=a>=this[R])&&(a-=this[R]),b}).bind(this),{})},_=Object.create(Object.defineProperties({},{withProto:{value:1},freeze:{value:2}}));for(let a=0;a<=3;a++)l.call(_,a);return _}(),V={withProto:d.bind(M[1]),andFreeze:d.bind(M[2]),withProtoAndFreeze:d.bind(M[3])},D=d.bind(M[0]);for(let l in V)Object.defineProperty(D,l,{enumerable:!1,writable:!1,configurable:!1,value:V[l]});return D}(),fe={SINGLE_LINE_HIGHLIGHT_CLASS:"editableArea--single-line",MULTI_LINE_HIGHLIGHT_CLASS:"editableArea--multi-line"},xe=function(e,T,d){const M=d.Range,V=function(s,g){const c=s.range,f=g.range;if(c[0]<f[0]||c[0]===f[0]&&c[3]<f[1])return-1},D=function(s,g){const c=g.split(`
1
+ import{j as B}from"./query-vendor-CT0SoqJh.js";import{a as Q,r as y}from"./react-vendor-B_QXlk-T.js";import{u as re,g as ce,c as le,d as he,E as pe}from"./editor-monaco-json-CTzuM8w2.js";import{u as be}from"./index-CslfgN2g.js";import Ce,{DiffEditor as Ee}from"./monaco-editor-B-NlkJ5A.js";import{u as X,v as we,a as ge,b as ye,f as Re,h as ve,T as Te,d as oe,t as Se}from"./MonacoPluginProvider-C_k1zpkx.js";import{B as ue}from"./button-DLt0WPRa.js";import{T as Me,u as Le,a as Ne}from"./HomePage-DX_EbLqY.js";import{b as de}from"./state-vendor-Az8redj0.js";import"./radix-ui-DkKm4m5M.js";import"./ui-vendor-ChWVh3T-.js";const De={initWith:function(e){const T=document.createElement("div"),d=e.editor.create(T),M=d.constructor.name,V=d.getModel().constructor.name;return{isInstanceValid:function(a){return a.constructor.name===M},isModelValid:function(a){return a.constructor.name===V},isRangesValid:function(a){return Array.isArray(a)?a.every(function(w){return typeof w=="object"&&w.constructor.name==="Object"?!(!w.hasOwnProperty("range")||!Array.isArray(w.range)||w.range.length!==4||!w.range.every(b=>b>0&&parseInt(b)===b)||w.hasOwnProperty("allowMultiline")&&typeof w.allowMultiline!="boolean"||w.hasOwnProperty("label")&&typeof w.label!="string"||w.hasOwnProperty("validate")&&typeof w.validate!="function"):!1}):!1}}}},ne=function(e,T,d){return"The value for the "+T+" should be of type "+(Array.isArray(e)?e.join(" | "):e)+". "+(d||"")},se=function(){const e=function(l,_){return typeof l!="object"||l===null?this.freeze?Object.freeze(l):l:l instanceof Date?this.freeze?Object.freeze(new Date(l)):new Date(l):_.call(this,l)},T=function(l,_){const a=Object.keys(l),w=new Array(a.length);for(let b=0;b<a.length;b++)w[a[b]]=e.call(this,l[a[b]],_);return w},d=function(l){return e.call(this,l,function(_){if(Array.isArray(_))return T.call(this,_,d);const a={};for(let w in _)!this.withProto&&Object.hasOwnProperty.call(_,w)===!1||(a[w]=e.call(this,_[w],d));return a})},M=function(){const l=function(a){const w=["withProto","freeze"];this[a]=w.reduce((function(b,R){return(b[R]=a>=this[R])&&(a-=this[R]),b}).bind(this),{})},_=Object.create(Object.defineProperties({},{withProto:{value:1},freeze:{value:2}}));for(let a=0;a<=3;a++)l.call(_,a);return _}(),V={withProto:d.bind(M[1]),andFreeze:d.bind(M[2]),withProtoAndFreeze:d.bind(M[3])},D=d.bind(M[0]);for(let l in V)Object.defineProperty(D,l,{enumerable:!1,writable:!1,configurable:!1,value:V[l]});return D}(),fe={SINGLE_LINE_HIGHLIGHT_CLASS:"editableArea--single-line",MULTI_LINE_HIGHLIGHT_CLASS:"editableArea--multi-line"},xe=function(e,T,d){const M=d.Range,V=function(s,g){const c=s.range,f=g.range;if(c[0]<f[0]||c[0]===f[0]&&c[3]<f[1])return-1},D=function(s,g){const c=g.split(`
2
2
  `),f=c.length,h=[];return s.forEach(function(C,S){if(C===0)throw new Error("Range values cannot be zero");switch(S){case 0:{if(C<0)throw new Error("Start Line of Range cannot be negative");if(C>f)throw new Error("Provided Start Line("+C+") is out of bounds. Max Lines in content is "+f);h[S]=C}break;case 1:{let N=C;const I=h[0],P=c[I-1].length;if(N<0){if(N=P-Math.abs(N),N<0)throw new Error("Provided Start Column("+C+") is out of bounds. Max Column in line "+I+" is "+P)}else if(N>P+1)throw new Error("Provided Start Column("+C+") is out of bounds. Max Column in line "+I+" is "+P);h[S]=N}break;case 2:{let N=C;if(N<0){if(N=f-Math.abs(C),N<0)throw new Error("Provided End Line("+C+") is out of bounds. Max Lines in content is "+f);N<h[0]&&console.warn("Provided End Line("+C+") is less than the start Line, the Restriction may not behave as expected")}else if(C>f)throw new Error("Provided End Line("+C+") is out of bounds. Max Lines in content is "+f);h[S]=N}break;case 3:{let N=C;const I=h[2],P=c[I-1].length;if(N<0){if(N=P-Math.abs(N),N<0)throw new Error("Provided End Column("+C+") is out of bounds. Max Column in line "+I+" is "+P)}else if(N>P+1)throw new Error("Provided Start Column("+C+") is out of bounds. Max Column in line "+I+" is "+P);h[S]=N}break}}),h};let l=se(T).sort(V);const _=function(s){const g=e.getValue();s.forEach(function(c,f){const h=D(c.range,g),C=h[0],S=h[1],N=h[2],I=h[3];c._originalRange=h.slice(),c.range=new M(C,S,N,I),c.index=f,c.allowMultiline||(c.allowMultiline=M.spansMultipleLines(c.range)),c.label||(c.label=`[${C},${S} -> ${N}${I}]`)})},a=function(){return l.reduce(function(s,g){return s[g.label]={allowMultiline:g.allowMultiline||!1,index:g.index,range:Object.assign({},g.range),originalRange:g._originalRange.slice()},s},{})},w=function(){return l.reduce(function(s,g){return s[g.label]=e.getValueInRange(g.range),s},{})},b=function(s,g){if(typeof s=="object"&&!Array.isArray(s)){g=typeof g=="boolean"?g:!1;const c=l.reduce(function(f,h){return h.label&&(f[h.label]=h),f},{});for(let f in s){const h=c[f];if(h){const C=s[f];if(Y(h,C))throw new Error("Multiline change is not allowed for "+f);const S=se(h.range);if(S.endLine=S.startLine+C.split(`
3
3
  `).length-1,S.endColumn=C.split(`
4
4
  `).pop().length,k(h,C,S))throw new Error("Change is invalidated by validate function of "+f);e.applyEdits([{forceMoveMarkers:!!g,range:h.range,text:C}])}else console.error("No restriction found for "+f)}}else throw new Error("Value must be an object")},R=function(){return e._restrictionChangeListener.dispose(),window.removeEventListener("error",L),delete e.editInRestrictedArea,delete e.disposeRestrictions,delete e.getValueInEditableRanges,delete e.updateValueInEditableRanges,delete e.updateRestrictions,delete e.getCurrentEditableRanges,delete e.toggleHighlightOfEditableAreas,delete e._hasHighlight,delete e._isRestrictedModel,delete e._isCursorAtCheckPoint,delete e._currentCursorPositions,delete e._editableRangeChangeListener,delete e._restrictionChangeListener,delete e._oldDecorations,delete e._oldDecorationsSource,e},q=function(s){s.some(function(g){const c=g.lineNumber,f=g.column,h=l.length;for(let C=0;C<h;C++){const S=l[C].range;if(S.startLineNumber===c&&S.startColumn===f||S.endLineNumber===c&&S.endColumn===f)return e.pushStackElement(),!0}})},$=function(s){typeof s=="function"&&e._editableRangeChangeListener.push(s)},v=function(s,g){const c=a();e._editableRangeChangeListener.forEach(function(f){f.call(e,s,g,c)})},O=function(){return Promise.resolve().then(function(){e.editInRestrictedArea=!0,e.undo(),e.editInRestrictedArea=!1,e._hasHighlight&&e._oldDecorationsSource&&(e.deltaDecorations(e._oldDecorations,e._oldDecorationsSource),e._oldDecorationsSource.forEach(function(s){s.range=e.getDecorationRange(s.id)}))})},G=function(s,g,c,f,h,C){let S=g.endLineNumber,N=g.endColumn;s.prevRange=g,s.range=g.setEndPosition(c,f);const I=l.length;let P=h.length;const j=f-N,U=c-S,t=e._currentCursorPositions||[],p=t.length;if(P!==p&&(h=h.filter(function(r){const o=r.range;for(let n=0;n<p;n++){const E=t[n];if(o.startLineNumber===E.startLineNumber&&o.endLineNumber===E.endLineNumber&&o.startColumn===E.startColumn&&o.endColumn===E.endColumn)return!0}return!1}),P=h.length),U!==0){for(let r=s.index+1;r<I;r++){const o=l[r],n=o.range;S===n.startLineNumber&&(n.startColumn+=j),S===n.endLineNumber&&(n.endColumn+=j),n.startLineNumber+=U,n.endLineNumber+=U,o.range=n}for(let r=C+1;r<P;r++){const o=h[r],n=o.range,E=n.toString(),A=rangeMap[E];delete rangeMap[E],S===n.startLineNumber&&(n.startColumn+=j),S===n.endLineNumber&&(n.endColumn+=j),n.startLineNumber+=U,n.endLineNumber+=U,o.range=n,rangeMap[n.toString()]=A}}else{for(let r=s.index+1;r<I;r++){const o=l[r],n=o.range;if(n.startLineNumber>S)break;n.startColumn+=j,n.endColumn+=j,o.range=n}for(let r=C+1;r<P;r++){const o=h[r],n=o.range,E=n.toString(),A=rangeMap[E];if(delete rangeMap[E],n.startLineNumber>S){rangeMap[n.toString()]=A;break}else n.startColumn+=j,n.endColumn+=j,o.range=n,rangeMap[n.toString()]=A}}},F=function(s,g){const c={},f=s.range;return s.text===""?c.isDeletion=!0:f.startLineNumber===f.endLineNumber&&f.startColumn===f.endColumn?c.isAddition=!0:c.isReplacement=!0,c.startLineOfRange=f.startLineNumber===g.startLineNumber,c.startColumnOfRange=f.startColumn===g.startColumn,c.endLineOfRange=f.endLineNumber===g.endLineNumber,c.endColumnOfRange=f.endColumn===g.endColumn,c.middleLineOfRange=!c.startLineOfRange&&!c.endLineOfRange,g.startLineNumber===g.endLineNumber?c.rangeIsSingleLine=!0:c.rangeIsMultiLine=!0,c},K=function(s){l=se(s).sort(V),_(l)},m=function(s){if(e._hasHighlight)e.deltaDecorations(e._oldDecorations,[]),delete e._oldDecorations,delete e._oldDecorationsSource,e._hasHighlight=!1;else{const g=s.cssClassForSingleLine||fe.SINGLE_LINE_HIGHLIGHT_CLASS,c=s.cssClassForMultiLine||fe.MULTI_LINE_HIGHLIGHT_CLASS,f=l.map(function(h){const C={range:h.range,options:{className:h.allowMultiline?c:g}};return h.label&&(C.hoverMessage=h.label),C});e._oldDecorations=e.deltaDecorations([],f),e._oldDecorationsSource=f.map(function(h,C){return Object.assign({},h,{id:e._oldDecorations[C]})}),e._hasHighlight=!0}},L=function(){console.debug("handler for unhandled promise rejection")},z=function(s){for(let g in s){const c=s[g];c.range=c.prevRange}},Y=function(s,g){return!s.allowMultiline&&g.includes(`
@@ -6,4 +6,4 @@ import{j as B}from"./query-vendor-UL64zsGL.js";import{a as Q,r as y}from"./react
6
6
  `));const T=function(v){const O=v.getModel();if(O._isCursorAtCheckPoint){const G=v.getSelections(),F=G.map(function(K){return{lineNumber:K.positionLineNumber,column:K.positionColumn}});O._isCursorAtCheckPoint(F),O._currentCursorPositions=G}},d={},{isInstanceValid:M,isModelValid:V,isRangesValid:D}=De.initWith(e),l=function(v){if(M(v)){let O=v.getDomNode();return R._listener=T.bind(q,v),R._editorInstance=v,R._editorInstance._isInDevMode=!1,O.addEventListener("keydown",R._listener,!0),R._onChangeModelDisposable=v.onDidChangeModel(function(){O&&O.removeEventListener("keydown",R._listener,!0);const G=v.getDomNode();G&&G.addEventListener("keydown",R._listener,!0),O=G}),!0}else throw new Error(ne("ICodeEditor","editorInstance","This type interface can be found in monaco editor documentation"))},_=function(v,O){if(V(v))if(D(O)){const G=xe(v,O,e);return d[G.uri.toString()]=G,G}else throw new Error(ne("Array<RangeRestrictionObject>","ranges","Please refer constrained editor documentation for proper structure"));else throw new Error(ne("ICodeEditor","editorInstance","This type interface can be found in monaco editor documentation"))},a=function(v){if(V(v)){const O=v.uri.toString(),G=d[O];return G?G.disposeRestrictions():(console.warn("Current Model is not a restricted Model"),!1)}else throw new Error(ne("ICodeEditor","editorInstance","This type interface can be found in monaco editor documentation"))},w=function(){if(R._editorInstance){const O=R._editorInstance.getDomNode();O&&O.removeEventListener("keydown",R._listener),R._onChangeModelDisposable&&R._onChangeModelDisposable.dispose(),delete R._listener,delete R._editorInstance._isInDevMode,delete R._editorInstance._devModeAction,delete R._editorInstance,delete R._onChangeModelDisposable;for(let G in d)delete d[G];return!0}return!1},b=function(){R._editorInstance._isInDevMode?(R._editorInstance._isInDevMode=!1,R._editorInstance._devModeAction.dispose(),delete R._editorInstance._devModeAction):(R._editorInstance._isInDevMode=!0,R._editorInstance._devModeAction=R._editorInstance.addAction({id:"showRange",label:"Show Range in console",contextMenuGroupId:"navigation",contextMenuOrder:1.5,run:function(v){const G=v.getSelections().reduce(function(F,{startLineNumber:K,endLineNumber:m,startColumn:L,endColumn:z}){return F.push("range : "+JSON.stringify([K,L,m,z])),F},[]).join(`
7
7
  `);console.log(`Selected Ranges :
8
8
  `+JSON.stringify(G,null,2))}}))},R={_listener:null,_editorInstance:null,_uriRestrictionMap:d,_injectedResources:e},q=Object.create(R),$={initializeIn:l,addRestrictionsTo:_,removeRestrictionsIn:a,disposeConstrainer:w,toggleDevMode:b};for(let v in $)Object.defineProperty(q,v,{enumerable:!1,writable:!1,configurable:!1,value:$[v]});return Object.freeze(q)}function Ie({document:e,readOnly:T=!1,onChange:d}){const M=y.useRef(null),V=y.useRef(null),D=y.useRef(null),{theme:l}=be(),[_,a]=Q.useState(!1),w=X(m=>m.pendingDiffs[e.name]),b=X(m=>m.clearPendingDiff),R=X(m=>m.saveDocument),{registerEditor:q,unregisterEditor:$,setActiveEditor:v}=re(),O=l==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l,G=y.useCallback(m=>{console.log("Monaco theme editor will mount"),V.current=m,a(!0)},[]),F=y.useCallback((m,L)=>{M.current=m,D.current=m.getModel(),q(e.name,m,L),v(e.name);const z=_e(L);m.getModel()&&z.initializeIn(m),m.updateOptions({formatOnType:!0,formatOnPaste:!0,automaticLayout:!0,minimap:{enabled:!1},scrollBeyondLastLine:!0,wordWrap:"on",folding:!0,foldingStrategy:"indentation",suggest:{showColors:!0,showConstants:!0,showEnums:!0,showFields:!0,showFunctions:!0,showKeywords:!0,showModules:!0,showProperties:!0,showSnippets:!0,showStructs:!0,showTypeParameters:!0,showUnits:!0,showValues:!0,showVariables:!0}}),m.addCommand(L.KeyMod.CtrlCmd|L.KeyCode.KeyK,()=>{const k=ce(m,L);if(k){const J=le(k);window.dispatchEvent(new CustomEvent("monaco-selection-to-ai",{detail:{documentName:e.name,selection:k,snippet:J,isTheme:!0}}))}}),m.addCommand(L.KeyMod.CtrlCmd|L.KeyCode.KeyS,()=>{console.log("Save command triggered in theme editor")}),m.addAction({id:"send-theme-to-ai-assistant",label:"Send to AI Assistant (⌘K)",contextMenuGroupId:"navigation",contextMenuOrder:1.5,keybindings:[L.KeyMod.CtrlCmd|L.KeyCode.KeyK],run:function(){const k=ce(m,L);if(k){const J=le(k);window.dispatchEvent(new CustomEvent("monaco-selection-to-ai",{detail:{documentName:e.name,selection:k,snippet:J,isTheme:!0}}))}}}),setTimeout(()=>{var k;(k=m.getAction("editor.action.formatDocument"))==null||k.run()},100),console.log("Monaco theme editor mounted")},[e.name,q,v]);y.useEffect(()=>()=>{$(e.name)},[e.name,$]);const K=y.useCallback((m,L)=>{m!==void 0&&d&&d(m)},[d]);return y.useEffect(()=>{if(!M.current||!V.current||!D.current||!_)return;const m=V.current,L=D.current;m.editor.setModelMarkers(L,"theme-validation",[]);const z=we(e.text);if(!z.valid&&z.errors){const Y=z.errors.map(k=>({severity:m.MarkerSeverity.Error,startLineNumber:k.line||1,startColumn:k.column||1,endLineNumber:k.line||1,endColumn:k.column||1e3,message:k.message,source:"theme-validation"}));m.editor.setModelMarkers(L,"theme-validation",Y)}},[e.text,_]),y.useEffect(()=>{if(M.current){const m=O==="dark"?"vs-dark":"vs";M.current.updateOptions({theme:m})}},[O]),B.jsx("div",{className:"relative h-full",children:w?B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex items-center justify-between px-2 py-1 border-b bg-muted/40 text-xs",children:[B.jsxs("div",{children:["Review changes for"," ",B.jsx("span",{className:"font-medium",children:e.name})]}),B.jsxs("div",{className:"flex gap-2",children:[B.jsx(ue,{variant:"secondary",size:"sm",onClick:()=>b(e.name),children:"Discard"}),B.jsx(ue,{size:"sm",onClick:()=>{R(e.name,w.modified),b(e.name,!0)},children:"Apply Changes"})]})]}),B.jsx(Ee,{height:"calc(100% - 32px)",original:w.original,modified:w.modified,language:"json",theme:O==="dark"?"vs-dark":"vs",options:{readOnly:!0,renderSideBySide:!0,originalEditable:!1,automaticLayout:!0,minimap:{enabled:!1}},beforeMount:G})]}):B.jsx(Ce,{height:"100%",language:"json",defaultPath:e.name,value:e.text,theme:O==="dark"?"vs-dark":"vs",onChange:K,beforeMount:G,onMount:F,options:{readOnly:T,lineNumbers:"on",glyphMargin:!0,folding:!0,lineDecorationsWidth:5,lineNumbersMinChars:3,renderValidationDecorations:"on",quickSuggestions:{other:!0,comments:!1,strings:!0},acceptSuggestionOnCommitCharacter:!0,acceptSuggestionOnEnter:"on",accessibilitySupport:"auto",autoIndent:"advanced",formatOnType:!0,formatOnPaste:!0,automaticLayout:!0,minimap:{enabled:!1},scrollBeyondLastLine:!0,wordWrap:"on"}})})}const Pe=Q.memo(Ie);function Ae({name:e,text:T,buildError:d,saveDocumentDebounceWait:M,documentType:V}){const{saveDocument:D}=X(b=>b),{updateTheme:l}=ge(b=>b),_=Q.useMemo(()=>he(l,M),[l,M]);Q.useEffect(()=>()=>{_.flush()},[_]);const a=Q.useCallback(b=>{D(e,b),V==="application/json+theme"&&(console.log("TabContent: Theme document change detected, debouncing update",{documentName:e,debounceWait:M}),_(e,b))},[e,D,_,V,M]),w=Q.useMemo(()=>({name:e,type:"application/json",text:T,mtime:new Date,ctime:new Date,atime:new Date}),[e,T]);return B.jsx(Me,{value:e,className:"mt-0 h-full p-0",tabIndex:-1,children:V==="application/json+theme"?B.jsx(Pe,{document:w,onChange:a}):B.jsx(pe,{name:e,value:T,saveDocumentDebounceWait:M})})}const Oe=Q.memo(Ae);function ke({openTabs:e,documents:T,buildErrors:d,saveDocumentDebounceWait:M}){const{documentTypes:V}=X(D=>D);return e.map(D=>T.find(l=>l.name===D)).filter(D=>D!==void 0).map(D=>{const l=V[D.name]||"application/json+report";return B.jsx(Oe,{name:D.name,text:D.text,buildError:d[D.name],saveDocumentDebounceWait:M,documentType:l},D.name)})}const je=Q.memo(ke);class Ve extends Error{constructor(T,d,M){super(T),this.lastError=d,this.attempts=M,this.name="RetryError"}}async function Ge(e,T={}){const{maxRetries:d=3,initialDelay:M=1e3,maxDelay:V=3e4,backoffFactor:D=2,onRetry:l,shouldRetry:_=()=>!0,signal:a}=T;let w;for(let b=0;b<=d;b++)try{if(a!=null&&a.aborted)throw new Error("Operation cancelled");return await e()}catch(R){if(w=R instanceof Error?R:new Error(String(R)),b===d)break;if(!_(w))throw w;const $=Math.min(M*Math.pow(D,b),V)*(.5+Math.random()*.5);l&&l(w,b+1),await new Promise(v=>{const O=setTimeout(v,$);a&&a.addEventListener("abort",()=>{clearTimeout(O),v(void 0)},{once:!0})})}throw new Ve(`Failed after ${d+1} attempts`,w,d+1)}const me={networkErrors:e=>["NetworkError","Failed to fetch","ERR_NETWORK","ECONNREFUSED","ETIMEDOUT","ENOTFOUND","fetch failed"].some(d=>e.message.includes(d)||e.name.includes(d)),httpStatusCodes:e=>T=>{var d;return(d=T.response)!=null&&d.status?e.includes(T.response.status):!1},temporaryErrors:e=>["EBUSY","EAGAIN","temporarily unavailable","too many requests","rate limit"].some(d=>e.message.toLowerCase().includes(d.toLowerCase())),combine:(...e)=>T=>e.some(d=>d(T))};function He(){const e=ye(t=>t.setOutput),T=y.useContext(Re),d=y.useContext(ve),M=y.useContext(Te),V=oe(t=>t.saveDocumentDebounceWait),D=oe(t=>t.autoReload),l=oe(t=>t.renderingLibrary),{openTabs:_,activeTab:a,setActiveTab:w,documents:b,buildErrors:R,setBuildError:q,documentTypes:$}=X(de(t=>({openTabs:t.openTabs,activeTab:t.activeTab,setActiveTab:t.setActiveTab,documents:t.documents,buildErrors:t.buildErrors,setBuildError:t.setBuildError,documentTypes:t.documentTypes}))),{customThemes:v,getAllThemeNames:O,getTheme:G}=ge(de(t=>({customThemes:t.customThemes,getAllThemeNames:t.getAllThemeNames,getTheme:t.getTheme}))),{generatePresentation:F,cancelGeneration:K}=Le(),m=y.useRef(new Map),L=y.useRef(new Map),z=y.useRef(""),Y=y.useRef(new Map),k=y.useCallback(t=>{const r=(Y.current.get(t)||0)+1;return Y.current.set(t,r),r},[]),J=y.useCallback(async(t,p)=>{if(!t||!F)return;const r=m.current.get(t.name);r&&(r.abort(),m.current.delete(t.name));const o=new AbortController,n=o.signal;m.current.set(t.name,o);const E=`${t.name}-theme-${Date.now()}-${Math.random()}`,A=k(t.name);z.current=E,console.log("Editor: Starting theme-triggered build with fresh data",{docName:t.name,requestId:E,freshThemeCount:Object.keys(p).length,version:A});const x={id:E,docName:t.name,doc:t,signal:n,timestamp:Date.now()};await s.current(x,A,p)},[F,e,k]),Z=y.useCallback(async(t,p,r)=>{var x;const{doc:o,signal:n,id:E}=t;e({globalError:void 0,isGenerating:!0,generationProgress:{stage:"parsing",message:"Rebuilding with updated theme..."}});const A=(i,u)=>{n.aborted||z.current!==E||e({isGenerating:!0,generationProgress:{stage:i,message:u}})};try{console.log("Editor: Generating document with fresh themes",{docName:o.name,themeNames:Object.keys(r),requestId:E});const i=await F(o.name,o.text,r,A,{bypassCache:!0});if(n.aborted||z.current!==E){console.log("Theme build cancelled for:",o.name),e({isGenerating:!1,generationProgress:void 0});return}i&&typeof i=="object"&&"name"in i&&"text"in i&&"blob"in i&&(console.log("Editor: Theme-triggered build completed",{docName:i.name,blobSize:(x=i.blob)==null?void 0:x.size,timestamp:Date.now(),requestId:E}),e({name:i.name,text:i.text,blob:i.blob,globalError:void 0,isGenerating:!1,isPreviewStale:!1,generationProgress:void 0,lastBuiltSequence:T.getState().editSequence,cacheStatus:i.cacheStatus,cacheHitRate:i.cacheHitRate,warnings:i.warnings}),q(i.name,void 0))}catch(i){if(n.aborted||z.current!==E){console.log("Theme build cancelled with error for:",o.name),e({isGenerating:!1,generationProgress:void 0});return}const u=i instanceof Error?i.message:String(i);console.error("Theme build error:",u),e({globalError:`Theme rebuild failed: ${u}`,isGenerating:!1,generationProgress:void 0}),q(o.name,u)}finally{m.current.delete(o.name)}},[F,e,q,T]),s=y.useRef(Z);y.useEffect(()=>{s.current=Z});const g=y.useMemo(()=>{const t=Object.entries(v).map(([p,r])=>{let o=0;return r.lastModified&&(r.lastModified instanceof Date?o=r.lastModified.getTime():typeof r.lastModified=="string"&&(o=new Date(r.lastModified).getTime())),{key:p,name:r.name,content:r.content,valid:r.valid,lastModified:o}});return JSON.stringify(t)},[v]),c=y.useMemo(()=>{const t={};return Object.values(v).forEach(p=>{p.valid&&p.parsed&&(t[p.name]=p.parsed)}),t},[g]),f=y.useCallback(()=>{const t={},{customThemes:p}=M.getState();return Object.values(p).forEach(r=>{r.valid&&r.parsed&&(t[r.name]=r.parsed)}),t},[M]),h=y.useCallback(async(t,p,r)=>{if(!t||!F)return;const o=m.current.get(t.name);o&&(o.abort(),m.current.delete(t.name));const n=p?null:new AbortController,E=p||n.signal;n&&m.current.set(t.name,n);const A=`${t.name}-${Date.now()}-${Math.random()}`,x=k(t.name);z.current=A;const i={id:A,docName:t.name,doc:t,signal:E,timestamp:Date.now()};await S.current(i,x,r)},[F,e,k]),C=y.useCallback(async(t,p,r)=>{var x;const{doc:o,signal:n,id:E}=t;if(z.current!==E){console.log("Skipping outdated build request for:",o.name),e({isGenerating:!1,generationProgress:void 0});return}e({globalError:void 0,isGenerating:!0,generationProgress:{stage:"parsing",message:"Validating JSON structure..."}});const A=(i,u)=>{if(n.aborted||z.current!==E)return;if((Y.current.get(o.name)||0)!==p){console.log("Document version changed, aborting build"),n.dispatchEvent(new Event("abort"));return}e({isGenerating:!0,generationProgress:{stage:i,message:u}})};try{const i=f();console.log("Editor: Using themes for document build",{docName:o.name,freshThemeCount:Object.keys(i).length,freshThemeNames:Object.keys(i),memoizedCount:Object.keys(c).length,requestId:E});const u=await Ge(async()=>{if(n.aborted)throw new Error("Build cancelled");return await F(o.name,o.text,i,A,r)},{maxRetries:2,initialDelay:500,shouldRetry:H=>H.message.includes("cancelled")||H.message.includes("JSON")||H.message.includes("parse")||H.message.includes("syntax")?!1:me.combine(me.temporaryErrors,W=>W.message.includes("Worker")||W.message.includes("Proxy"))(H),onRetry:(H,W)=>{console.log(`Retrying presentation generation (attempt ${W}):`,H.message),e({isGenerating:!0,generationProgress:{stage:"parsing",message:`Retrying generation (attempt ${W})...`}})},signal:n});if(n.aborted||z.current!==E){console.log("Build cancelled for:",o.name),e({isGenerating:!1,generationProgress:void 0});return}u&&typeof u=="object"&&"name"in u&&"text"in u&&"blob"in u&&(console.log("Editor: Build completed",{docName:u.name,blobSize:(x=u.blob)==null?void 0:x.size,timestamp:Date.now(),requestId:E,version:p}),e({name:u.name,text:u.text,blob:u.blob,globalError:void 0,isGenerating:!1,isPreviewStale:!1,generationProgress:void 0,lastBuiltSequence:T.getState().editSequence,cacheStatus:u.cacheStatus,cacheHitRate:u.cacheHitRate,warnings:u.warnings}),q(u.name,void 0))}catch(i){if(n.aborted||z.current!==E){console.log("Build cancelled with error for:",o.name),e({isGenerating:!1,generationProgress:void 0});return}const u=i instanceof Error?i.message:String(i);e({globalError:u,isGenerating:!1,generationProgress:void 0}),q(o.name,u)}finally{m.current.delete(o.name)}},[F,f,e,q,T]),S=y.useRef(C);y.useEffect(()=>{S.current=C});const N=y.useRef(null);y.useEffect(()=>{console.log("Editor: Document rebuild effect triggered",{activeTab:a});const t=b.find(o=>o.name===a),p=$[a]||"application/json+report";p==="application/json+report"&&t&&(N.current=a);const r=L.current.get(a);if(r&&(clearTimeout(r),L.current.delete(a)),t&&p==="application/json+report")if(!D||l!=="docxjs")T.getState().isGenerating||e({isPreviewStale:!0});else{const o=t.text.length,n=o>1e4?300:o>5e3?200:100;m.current.forEach((A,x)=>{x!==a&&(A.abort(),m.current.delete(x))});const E=setTimeout(()=>{console.log("Editor: Triggering document build after debounce",{docName:t.name,debounceTime:n}),L.current.delete(a),k(t.name),h(t)},n);L.current.set(a,E)}else t&&p==="application/json+theme"&&K();return()=>{const o=L.current.get(a);o&&(clearTimeout(o),L.current.delete(a))}},[b,a,e,$,h,K,D,l]);const I=y.useMemo(()=>{var r;const t=new Map,p=b.find(o=>o.name===a);if(p&&$[p.name]==="application/json+report")try{const n=(r=JSON.parse(p.text).props)==null?void 0:r.theme;typeof n=="string"&&Object.values(v).some(A=>A.name===n&&A.valid)&&t.set(p.name,n)}catch{}return t},[a,b,$,v]);y.useEffect(()=>(console.log("Editor: Setting up theme change listener",{documentCount:b.length,dependencyCount:I.size,dependencies:Array.from(I.entries()),customThemes:Object.entries(v).map(([p,r])=>({key:p,name:r.name,valid:r.valid}))}),Se.onThemeChange(p=>{console.log("Editor: Theme change detected",{event:p,dependencies:Array.from(I.entries()),activeTab:a,customThemes:Object.entries(v).map(([i,u])=>({key:i,name:u.name,valid:u.valid}))});const r=[];if(I.forEach((i,u)=>{if(i===p.themeName){const H=b.find(W=>W.name===u);H&&r.push(H)}}),console.log("Editor: Documents using changed theme",{themeName:p.themeName,documentCount:r.length,documentNames:r.map(i=>i.name)}),r.length===0){console.log("Editor: No documents use this theme, skipping rebuild");return}const o=600,n=r.find(i=>i.name===a);if(!n){r.length>0&&e({isPreviewStale:!0});return}if(!D||l!=="docxjs"){T.getState().isGenerating||e({isPreviewStale:!0});return}console.log("Editor: Rebuilding only active document",{activeDocName:n.name,themeName:p.themeName,totalDocumentsUsingTheme:r.length}),["theme-event","backup",n.name].forEach(i=>{const u=`${i}-${n.name}`,H=L.current.get(u);H&&(clearTimeout(H),L.current.delete(u))});const E=m.current.get(n.name);E&&(E.abort(),m.current.delete(n.name));const A=`theme-event-${n.name}`,x=setTimeout(()=>{L.current.delete(A),console.log("Editor: Force rebuilding active document due to theme change",{docName:n.name,themeName:p.themeName,timestamp:Date.now()});const i={};O().forEach(H=>{const W=G(H);W&&(i[H]=W)}),console.log("Editor: Using fresh theme data for rebuild",{freshThemeCount:Object.keys(i).length,freshThemeNames:Object.keys(i),memoizedCount:Object.keys(c).length}),k(n.name),J(n,i)},o);L.current.set(A,x)})),[I,b,h,k,a,O,G,J,c,D,l,e]);const P=y.useRef(null),j=y.useRef(h);y.useEffect(()=>{j.current=h});const U=y.useRef(k);return y.useEffect(()=>{U.current=k}),y.useEffect(()=>{const t=()=>{e({isGenerating:!0});let p=!1;const r=re.getState().getActiveEditor();if(r&&!d.getState().pendingDiffs[r.documentName]){const i=r.editor.getValue();d.getState().saveDocument(r.documentName,i)}const{documents:o,documentTypes:n}=d.getState();for(const x of o)if(n[x.name]==="application/json+theme"){const i=re.getState().getEditor(x.name);if(i){const u=i.editor.getValue(),H=M.getState().customThemes[x.name];(!H||H.content!==u)&&(M.getState().updateTheme(x.name,u),p=!0)}}const E=d.getState().activeTab,A=L.current.get(E);A&&(clearTimeout(A),L.current.delete(E)),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{P.current=null;const{documents:x,activeTab:i,documentTypes:u}=d.getState();let H=i;if((u[i]||"application/json+report")==="application/json+theme")if(N.current)H=N.current;else{e({isGenerating:!1});return}const ee=x.find(te=>te.name===H);if(ee){const te=d.getState().pendingDiffs[H],ie=re.getState().getEditor(H),ae=te?{...ee,text:te.modified}:ie?{...ee,text:ie.editor.getValue()}:ee;U.current(ae.name),j.current(ae,void 0,p?{bypassCache:!0}:void 0)}else e({isGenerating:!1})},150)};return window.addEventListener("preview:flushAndBuild",t),()=>{window.removeEventListener("preview:flushAndBuild",t),P.current&&clearTimeout(P.current)}},[e,d,M]),y.useEffect(()=>()=>{m.current.forEach(t=>t.abort()),m.current.clear(),L.current.forEach(t=>clearTimeout(t)),L.current.clear(),K()},[K]),_.length?B.jsx(Ne,{value:a,onValueChange:w,className:"h-full",children:B.jsx(je,{openTabs:_,documents:b,buildErrors:R,saveDocumentDebounceWait:V})}):B.jsx("div",{className:"flex flex-col text-muted-foreground h-full items-center justify-center",children:b!=null&&b.length?"Open a document...":"Create a new document..."})}const Xe=y.memo(He);export{Xe as Editor};
9
- //# sourceMappingURL=editor-CtwF-qwA.js.map
9
+ //# sourceMappingURL=editor-LsSIrw3S.js.map