superleap-code-editor 1.0.3 → 1.0.4
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/index.cjs.js +9 -9
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +453 -399
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("react"),Er=require("@monaco-editor/react"),E=require("antd"),S=require("@tabler/icons-react");var q={exports:{}},L={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.min.js
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var Se;function
|
|
9
|
+
*/var Se;function jr(){if(Se)return L;Se=1;var s=w,t=Symbol.for("react.element"),i=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,d=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,x={key:!0,ref:!0,__self:!0,__source:!0};function j(F,m,T){var u,R={},C=null,k=null;T!==void 0&&(C=""+T),m.key!==void 0&&(C=""+m.key),m.ref!==void 0&&(k=m.ref);for(u in m)a.call(m,u)&&!x.hasOwnProperty(u)&&(R[u]=m[u]);if(F&&F.defaultProps)for(u in m=F.defaultProps,m)R[u]===void 0&&(R[u]=m[u]);return{$$typeof:t,type:F,key:C,ref:k,props:R,_owner:d.current}}return L.Fragment=i,L.jsx=j,L.jsxs=j,L}var W={};/**
|
|
10
10
|
* @license React
|
|
11
11
|
* react-jsx-runtime.development.js
|
|
12
12
|
*
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
*
|
|
15
15
|
* This source code is licensed under the MIT license found in the
|
|
16
16
|
* LICENSE file in the root directory of this source tree.
|
|
17
|
-
*/var Te;function
|
|
18
|
-
`+X+e}}var Z=!1,
|
|
19
|
-
`),_=
|
|
20
|
-
`),y=c.length-1,b=_.length-1;y>=1&&b>=0&&c[y]!==_[b];)b--;for(;y>=1&&b>=0;y--,b--)if(c[y]!==_[b]){if(y!==1||b!==1)do if(y--,b--,b<0||c[y]!==_[b]){var
|
|
21
|
-
`+c[y].replace(" at new "," at ");return e.displayName&&
|
|
17
|
+
*/var Te;function Fr(){return Te||(Te=1,process.env.NODE_ENV!=="production"&&(function(){var s=w,t=Symbol.for("react.element"),i=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),d=Symbol.for("react.strict_mode"),x=Symbol.for("react.profiler"),j=Symbol.for("react.provider"),F=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),u=Symbol.for("react.suspense_list"),R=Symbol.for("react.memo"),C=Symbol.for("react.lazy"),k=Symbol.for("react.offscreen"),z=Symbol.iterator,J="@@iterator";function G(e){if(e===null||typeof e!="object")return null;var r=z&&e[z]||e[J];return typeof r=="function"?r:null}var g=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function h(e){{for(var r=arguments.length,n=new Array(r>1?r-1:0),l=1;l<r;l++)n[l-1]=arguments[l];Me("error",e,n)}}function Me(e,r,n){{var l=g.ReactDebugCurrentFrame,v=l.getStackAddendum();v!==""&&(r+="%s",n=n.concat([v]));var p=n.map(function(f){return String(f)});p.unshift("Warning: "+r),Function.prototype.apply.call(console[e],console,p)}}var Ye=!1,Ve=!1,Ue=!1,qe=!1,He=!1,ne;ne=Symbol.for("react.module.reference");function Je(e){return!!(typeof e=="string"||typeof e=="function"||e===a||e===x||He||e===d||e===T||e===u||qe||e===k||Ye||Ve||Ue||typeof e=="object"&&e!==null&&(e.$$typeof===C||e.$$typeof===R||e.$$typeof===j||e.$$typeof===F||e.$$typeof===m||e.$$typeof===ne||e.getModuleId!==void 0))}function Ge(e,r,n){var l=e.displayName;if(l)return l;var v=r.displayName||r.name||"";return v!==""?n+"("+v+")":n}function ie(e){return e.displayName||"Context"}function N(e){if(e==null)return null;if(typeof e.tag=="number"&&h("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case a:return"Fragment";case i:return"Portal";case x:return"Profiler";case d:return"StrictMode";case T:return"Suspense";case u:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case F:var r=e;return ie(r)+".Consumer";case j:var n=e;return ie(n._context)+".Provider";case m:return Ge(e,e.render,"ForwardRef");case R:var l=e.displayName||null;return l!==null?l:N(e.type)||"Memo";case C:{var v=e,p=v._payload,f=v._init;try{return N(f(p))}catch{return null}}}return null}var I=Object.assign,$=0,ae,oe,se,le,ce,ue,fe;function de(){}de.__reactDisabledLog=!0;function Ke(){{if($===0){ae=console.log,oe=console.info,se=console.warn,le=console.error,ce=console.group,ue=console.groupCollapsed,fe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:de,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}$++}}function Xe(){{if($--,$===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:I({},e,{value:ae}),info:I({},e,{value:oe}),warn:I({},e,{value:se}),error:I({},e,{value:le}),group:I({},e,{value:ce}),groupCollapsed:I({},e,{value:ue}),groupEnd:I({},e,{value:fe})})}$<0&&h("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var K=g.ReactCurrentDispatcher,X;function B(e,r,n){{if(X===void 0)try{throw Error()}catch(v){var l=v.stack.trim().match(/\n( *(at )?)/);X=l&&l[1]||""}return`
|
|
18
|
+
`+X+e}}var Z=!1,M;{var Ze=typeof WeakMap=="function"?WeakMap:Map;M=new Ze}function ve(e,r){if(!e||Z)return"";{var n=M.get(e);if(n!==void 0)return n}var l;Z=!0;var v=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var p;p=K.current,K.current=null,Ke();try{if(r){var f=function(){throw Error()};if(Object.defineProperty(f.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(f,[])}catch(O){l=O}Reflect.construct(e,[],f)}else{try{f.call()}catch(O){l=O}e.call(f.prototype)}}else{try{throw Error()}catch(O){l=O}e()}}catch(O){if(O&&l&&typeof O.stack=="string"){for(var c=O.stack.split(`
|
|
19
|
+
`),_=l.stack.split(`
|
|
20
|
+
`),y=c.length-1,b=_.length-1;y>=1&&b>=0&&c[y]!==_[b];)b--;for(;y>=1&&b>=0;y--,b--)if(c[y]!==_[b]){if(y!==1||b!==1)do if(y--,b--,b<0||c[y]!==_[b]){var P=`
|
|
21
|
+
`+c[y].replace(" at new "," at ");return e.displayName&&P.includes("<anonymous>")&&(P=P.replace("<anonymous>",e.displayName)),typeof e=="function"&&M.set(e,P),P}while(y>=1&&b>=0);break}}}finally{Z=!1,K.current=p,Xe(),Error.prepareStackTrace=v}var A=e?e.displayName||e.name:"",_e=A?B(A):"";return typeof e=="function"&&M.set(e,_e),_e}function Qe(e,r,n){return ve(e,!1)}function er(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function Y(e,r,n){if(e==null)return"";if(typeof e=="function")return ve(e,er(e));if(typeof e=="string")return B(e);switch(e){case T:return B("Suspense");case u:return B("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case m:return Qe(e.render);case R:return Y(e.type,r,n);case C:{var l=e,v=l._payload,p=l._init;try{return Y(p(v),r,n)}catch{}}}return""}var V=Object.prototype.hasOwnProperty,he={},pe=g.ReactDebugCurrentFrame;function U(e){if(e){var r=e._owner,n=Y(e.type,e._source,r?r.type:null);pe.setExtraStackFrame(n)}else pe.setExtraStackFrame(null)}function rr(e,r,n,l,v){{var p=Function.call.bind(V);for(var f in e)if(p(e,f)){var c=void 0;try{if(typeof e[f]!="function"){var _=Error((l||"React class")+": "+n+" type `"+f+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[f]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw _.name="Invariant Violation",_}c=e[f](r,f,l,n,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(y){c=y}c&&!(c instanceof Error)&&(U(v),h("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",l||"React class",n,f,typeof c),U(null)),c instanceof Error&&!(c.message in he)&&(he[c.message]=!0,U(v),h("Failed %s type: %s",n,c.message),U(null))}}}var tr=Array.isArray;function Q(e){return tr(e)}function nr(e){{var r=typeof Symbol=="function"&&Symbol.toStringTag,n=r&&e[Symbol.toStringTag]||e.constructor.name||"Object";return n}}function ir(e){try{return me(e),!1}catch{return!0}}function me(e){return""+e}function ge(e){if(ir(e))return h("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",nr(e)),me(e)}var ye=g.ReactCurrentOwner,ar={key:!0,ref:!0,__self:!0,__source:!0},be,xe;function or(e){if(V.call(e,"ref")){var r=Object.getOwnPropertyDescriptor(e,"ref").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function sr(e){if(V.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function lr(e,r){typeof e.ref=="string"&&ye.current}function cr(e,r){{var n=function(){be||(be=!0,h("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}}function ur(e,r){{var n=function(){xe||(xe=!0,h("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};n.isReactWarning=!0,Object.defineProperty(e,"ref",{get:n,configurable:!0})}}var fr=function(e,r,n,l,v,p,f){var c={$$typeof:t,type:e,key:r,ref:n,props:f,_owner:p};return c._store={},Object.defineProperty(c._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(c,"_self",{configurable:!1,enumerable:!1,writable:!1,value:l}),Object.defineProperty(c,"_source",{configurable:!1,enumerable:!1,writable:!1,value:v}),Object.freeze&&(Object.freeze(c.props),Object.freeze(c)),c};function dr(e,r,n,l,v){{var p,f={},c=null,_=null;n!==void 0&&(ge(n),c=""+n),sr(r)&&(ge(r.key),c=""+r.key),or(r)&&(_=r.ref,lr(r,v));for(p in r)V.call(r,p)&&!ar.hasOwnProperty(p)&&(f[p]=r[p]);if(e&&e.defaultProps){var y=e.defaultProps;for(p in y)f[p]===void 0&&(f[p]=y[p])}if(c||_){var b=typeof e=="function"?e.displayName||e.name||"Unknown":e;c&&cr(f,b),_&&ur(f,b)}return fr(e,c,_,v,l,ye.current,f)}}var ee=g.ReactCurrentOwner,Ee=g.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,n=Y(e.type,e._source,r?r.type:null);Ee.setExtraStackFrame(n)}else Ee.setExtraStackFrame(null)}var re;re=!1;function te(e){return typeof e=="object"&&e!==null&&e.$$typeof===t}function je(){{if(ee.current){var e=N(ee.current.type);if(e)return`
|
|
22
22
|
|
|
23
|
-
Check the render method of \``+e+"`."}return""}}function vr(e){return""}var
|
|
23
|
+
Check the render method of \``+e+"`."}return""}}function vr(e){return""}var Fe={};function hr(e){{var r=je();if(!r){var n=typeof e=="string"?e:e.displayName||e.name;n&&(r=`
|
|
24
24
|
|
|
25
|
-
Check the top-level render call using <`+n+">.")}return r}}function je(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var n=hr(r);if(Re[n])return;Re[n]=!0;var s="";e&&e._owner&&e._owner!==ee.current&&(s=" It was passed a child from "+I(e._owner.type)+"."),A(e),h('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,s),A(null)}}function we(e,r){{if(typeof e!="object")return;if(Q(e))for(var n=0;n<e.length;n++){var s=e[n];te(s)&&je(s,r)}else if(te(e))e._store&&(e._store.validated=!0);else if(e){var v=K(e);if(typeof v=="function"&&v!==e.entries)for(var p=v.call(e),f;!(f=p.next()).done;)te(f.value)&&je(f.value,r)}}}function pr(e){{var r=e.type;if(r==null||typeof r=="string")return;var n;if(typeof r=="function")n=r.propTypes;else if(typeof r=="object"&&(r.$$typeof===g||r.$$typeof===j))n=r.propTypes;else return;if(n){var s=I(r);rr(n,e.props,"prop",s,e)}else if(r.PropTypes!==void 0&&!re){re=!0;var v=I(r);h("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",v||"Unknown")}typeof r.getDefaultProps=="function"&&!r.getDefaultProps.isReactClassApproved&&h("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function gr(e){{for(var r=Object.keys(e.props),n=0;n<r.length;n++){var s=r[n];if(s!=="children"&&s!=="key"){A(e),h("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",s),A(null);break}}e.ref!==null&&(A(e),h("Invalid attribute `ref` supplied to `React.Fragment`."),A(null))}}function Ce(e,r,n,s,v,p){{var f=Ge(e);if(!f){var c="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(c+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var _=vr();_?c+=_:c+=Fe();var y;e===null?y="null":Q(e)?y="array":e!==void 0&&e.$$typeof===t?(y="<"+(I(e.type)||"Unknown")+" />",c=" Did you accidentally export a JSX literal instead of a component?"):y=typeof e,h("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",y,c)}var b=dr(e,r,n,v,p);if(b==null)return b;if(f){var T=r.children;if(T!==void 0)if(s)if(Q(T)){for(var N=0;N<T.length;N++)we(T[N],e);Object.freeze&&Object.freeze(T)}else h("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else we(T,e)}return e===i?gr(b):pr(b),b}}function mr(e,r,n){return Ce(e,r,n,!0)}function yr(e,r,n){return Ce(e,r,n,!1)}var br=yr,Er=mr;W.Fragment=i,W.jsx=br,W.jsxs=Er})()),W}var Pe;function jr(){return Pe||(Pe=1,process.env.NODE_ENV==="production"?q.exports=Fr():q.exports=Rr()),q.exports}var l=jr();function Oe(o){const[t,a]=w.useState([]),[i,d]=w.useState(null),[E,F]=w.useState(""),[R,g]=w.useState(!1),[S,u]=w.useState(null),j=w.useCallback(async()=>{try{g(!0),u(null);const m=await o.getFiles();if(a(m),!i&&m.length>0){const h=ke(m);h&&d(h.id)}}catch(m){u(m instanceof Error?m.message:"Failed to load files")}finally{g(!1)}},[o,i]),C=w.useCallback(async m=>{try{g(!0),u(null);const h=await o.getFileContent(m);F(h)}catch(h){u(h instanceof Error?h.message:"Failed to load file content"),F("")}finally{g(!1)}},[o]),k=w.useCallback(async m=>{if(i)try{u(null),await o.updateFileContent(i,m),F(m),a(h=>De(h,i,{content:m}))}catch(h){u(h instanceof Error?h.message:"Failed to update file content")}},[i,o]),B=w.useCallback(m=>{d(m),C(m)},[C]),G=w.useCallback(()=>{j()},[j]),K=w.useCallback(m=>Ie(t,m),[t]);return w.useEffect(()=>{j()},[j]),w.useEffect(()=>{i&&C(i)},[i,C]),{files:t,activeFile:i,fileContent:E,loading:R,error:S,setActiveFile:B,updateFileContent:k,refreshFiles:G,getFileById:K}}function ke(o){for(const t of o){if(t.type==="file")return t;if(t.children){const a=ke(t.children);if(a)return a}}return null}function Ie(o,t){for(const a of o){if(a.id===t)return a;if(a.children){const i=Ie(a.children,t);if(i)return i}}return null}function De(o,t,a){return o.map(i=>i.id===t?{...i,...a}:i.children?{...i,children:De(i.children,t,a)}:i)}class Ae{config;files=[];constructor(t){this.config=t}async getFiles(){return this.files.length===0&&await this.loadFiles(),this.files}async getFileContent(t){if(t==="main-function")return await this.config.fetchFunction(this.config.functionId,this.config.version);throw new Error(`File ${t} not found`)}async updateFileContent(t,a){const i=this.findFileById(t);i&&(i.content=a),console.log(`Updated file ${t} with content:`,a)}async getFileMetadata(t){return this.findFileById(t)?.metadata||{}}async loadFiles(){this.files=[{id:"main-function",name:"function.js",type:"file",path:"/function.js",metadata:{language:"javascript",lastModified:new Date}},{id:"versions",name:"versions",type:"folder",path:"/versions",children:this.config.versionList.map(t=>({id:`version-${t}`,name:`v${t}.js`,type:"file",path:`/versions/v${t}.js`,metadata:{language:"javascript"}}))}]}findFileById(t){const a=i=>{for(const d of i){if(d.id===t)return d;if(d.children){const E=a(d.children);if(E)return E}}return null};return a(this.files)}}class Ne{config;files=[];constructor(t){this.config=t,this.initializeFiles()}async getFiles(){return this.files}async getFileContent(t){if(t==="form-code")return this.config.codeContent;throw new Error(`File ${t} not found`)}async updateFileContent(t,a){if(t==="form-code"){this.config.codeContent=a;const i=this.files.find(d=>d.id===t);i&&(i.content=a)}}async getFileMetadata(t){return this.findFileById(t)?.metadata||{}}initializeFiles(){this.files=[{id:"form-code",name:this.config.fileName||"code.js",type:"file",path:`/${this.config.fileName||"code.js"}`,content:this.config.codeContent,metadata:{language:this.config.language||"javascript",lastModified:new Date}}]}findFileById(t){return this.files.find(a=>a.id===t)||null}}class $e{config;files=[];constructor(t){this.config=t,this.initializeFiles()}async getFiles(){return this.files}async getFileContent(t){const a=this.findFileById(t);if(!a||!a.metadata?.url)throw new Error(`File ${t} not found`);try{const i=await fetch(a.metadata.url);if(!i.ok)throw new Error(`Failed to fetch file: ${i.statusText}`);return await i.text()}catch(i){throw new Error(`Error fetching file content: ${i}`)}}async updateFileContent(t,a){console.log(`Would save file ${t} content to backend:`,a);const i=this.findFileById(t);i&&(i.content=a)}async getFileMetadata(t){return this.findFileById(t)?.metadata||{}}initializeFiles(){this.files=this.config.fileUrls.map((t,a)=>({id:`url-file-${a}`,name:t.name,type:"file",path:`/${t.name}`,metadata:{language:t.type,url:t.url,lastModified:new Date}}))}findFileById(t){return this.files.find(a=>a.id===t)||null}}function Le(o){if(o.workflowConfig)return new Ae(o.workflowConfig);if(o.formConfig)return new Ne(o.formConfig);if(o.urlConfig)return new $e(o.urlConfig);throw new Error("No valid configuration provided")}const We=({value:o,onChange:t,language:a="javascript",filename:i,readOnly:d=!1,loading:E=!1})=>{const F=R=>{R!==void 0&&t(R)};return l.jsx("div",{className:"h-full w-full",children:l.jsx(xr,{height:"100%",defaultLanguage:a,defaultValue:o,onChange:F,theme:"vs-light",options:{minimap:{enabled:!1},fontSize:14,wordWrap:"on",automaticLayout:!0,padding:{top:16},scrollBeyondLastLine:!1,readOnly:d}})})},wr=({activePanel:o,setActivePanel:t})=>{const a=[{id:"explorer",icon:O.IconFolderOpen,label:"Files"},{id:"data",icon:O.IconDatabase,label:"Data"},{id:"functions",icon:O.IconCode,label:"Functions"},{id:"versions",icon:O.IconHistory,label:"Versions"},{id:"tests",icon:O.IconFlask,label:"Tests"}];return l.jsxs("div",{className:"w-14 border-r border-slate-200 bg-white flex flex-col gap-4 items-center py-4",children:[a.map(i=>{const d=i.icon;return l.jsx(x.Tooltip,{title:i.label,placement:"right",children:l.jsx(x.Button,{type:o===i.id?"primary":"text",icon:l.jsx(d,{size:16}),onClick:()=>t(i.id)})},i.id)}),l.jsx("div",{className:"mt-auto",children:l.jsx(x.Tooltip,{title:"Settings",placement:"right",children:l.jsx(x.Button,{type:"text",icon:l.jsx(O.IconSettings,{size:20})})})})]})},Be=({leftPanel:o,editor:t,rightPanel:a,activePanel:i,setActivePanel:d})=>l.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[l.jsx(wr,{activePanel:i,setActivePanel:d}),l.jsx("div",{className:"flex-1",children:a?l.jsxs(x.Splitter,{style:{height:"100%"},onResize:E=>console.log(E),children:[l.jsx(x.Splitter.Panel,{defaultSize:"25%",min:"15%",max:"40%",className:"bg-white border-r border-slate-200",collapsible:!0,children:l.jsx("div",{className:"h-full overflow-y-auto",children:o})}),l.jsx(x.Splitter.Panel,{defaultSize:"50%",min:"30%",children:t}),l.jsx(x.Splitter.Panel,{defaultSize:"25%",min:"20%",max:"50%",className:"bg-white border-l border-slate-200",children:l.jsx("div",{className:"h-full overflow-y-auto",children:a})})]}):l.jsxs(x.Splitter,{style:{height:"100%"},children:[l.jsx(x.Splitter.Panel,{defaultSize:"25%",min:"15%",max:"40%",className:"bg-white border-r border-slate-200",children:l.jsx("div",{className:"h-full overflow-y-auto",children:o})}),l.jsx(x.Splitter.Panel,{defaultSize:"75%",min:"60%",children:t})]})})]}),Me=({files:o,activeFile:t,onFileSelect:a,loading:i=!1,error:d=null,onRefresh:E})=>{const F=S=>S.map(u=>({title:u.name,key:u.id,icon:u.type==="file"?l.jsx(O.IconFile,{size:16,className:"text-slate-500 flex"}):l.jsx(O.IconFolderOpen,{size:16,className:"text-slate-500 flex"}),isLeaf:u.type==="file",children:u.children?F(u.children):void 0,metadata:u.metadata})),R=F(o),g=(S,u)=>{u?.node.isLeaf&&u.node.key&&a(u.node.key)};return l.jsxs("div",{className:"h-full",children:[l.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-slate-200",children:[l.jsx("h2",{className:"font-medium text-sm",children:"Files"}),l.jsx("div",{className:"flex items-center gap-2",children:E&&l.jsx(x.Button,{type:"text",icon:l.jsx(O.IconPlus,{size:16}),onClick:E,loading:i,title:"Refresh files"})})]}),l.jsxs("div",{className:"p-2",children:[d&&l.jsx(x.Alert,{message:"Error loading files",description:d,type:"error",className:"mb-2"}),l.jsx(x.Tree,{treeData:R,onSelect:g,selectedKeys:t?[t]:[],showIcon:!0,defaultExpandAll:!0,showLine:!0,className:"file-explorer-tree"})]})]})},J=({config:o,rightPanel:t=!1})=>{const a=w.useMemo(()=>Le(o),[o]);console.log({config:o});const{files:i,activeFile:d,fileContent:E,loading:F,error:R,setActiveFile:g,updateFileContent:S,refreshFiles:u,getFileById:j}=Oe(a),C=d?j(d):null,k=C?.metadata?.language||"javascript";return l.jsx(Be,{leftPanel:l.jsx(Me,{files:i,activeFile:d,onFileSelect:g,loading:F,error:R,onRefresh:u}),editor:l.jsx(We,{value:E,onChange:S,language:k,filename:C?.name,readOnly:o.settings?.readOnly,loading:F}),rightPanel:t,activePanel:"explorer",setActivePanel:()=>{}})},Cr=({functionId:o,version:t,versionList:a,fetchFunction:i,fetchVersionList:d})=>{const E={workflowConfig:{functionId:o,version:t,versionList:a,fetchFunction:i,fetchVersionList:d}};return l.jsx(J,{config:E})},_r=({codeContent:o,fileName:t="code.js",language:a="javascript",readOnly:i=!1})=>{const d={formConfig:{codeContent:o,fileName:t,language:a},settings:{readOnly:i}};return l.jsx(J,{config:d})},Sr=({fileUrls:o,rightPanel:t})=>{const a={urlConfig:{fileUrls:o}};return l.jsx(J,{config:a,rightPanel:t})},Tr="1.0.0";Object.defineProperty(exports,"Alert",{enumerable:!0,get:()=>x.Alert});Object.defineProperty(exports,"Button",{enumerable:!0,get:()=>x.Button});Object.defineProperty(exports,"Splitter",{enumerable:!0,get:()=>x.Splitter});Object.defineProperty(exports,"Tooltip",{enumerable:!0,get:()=>x.Tooltip});Object.defineProperty(exports,"Tree",{enumerable:!0,get:()=>x.Tree});exports.CodeEditor=We;exports.CodeEditorWrapper=J;exports.EditorLayout=Be;exports.FileExplorer=Me;exports.FormCodeEditor=_r;exports.FormFileProvider=Ne;exports.URLCodeEditor=Sr;exports.URLFileProvider=$e;exports.VERSION=Tr;exports.WorkflowCodeEditor=Cr;exports.WorkflowFileProvider=Ae;exports.createFileProvider=Le;exports.useFileManager=Oe;
|
|
25
|
+
Check the top-level render call using <`+n+">.")}return r}}function Re(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var n=hr(r);if(Fe[n])return;Fe[n]=!0;var l="";e&&e._owner&&e._owner!==ee.current&&(l=" It was passed a child from "+N(e._owner.type)+"."),D(e),h('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,l),D(null)}}function we(e,r){{if(typeof e!="object")return;if(Q(e))for(var n=0;n<e.length;n++){var l=e[n];te(l)&&Re(l,r)}else if(te(e))e._store&&(e._store.validated=!0);else if(e){var v=G(e);if(typeof v=="function"&&v!==e.entries)for(var p=v.call(e),f;!(f=p.next()).done;)te(f.value)&&Re(f.value,r)}}}function pr(e){{var r=e.type;if(r==null||typeof r=="string")return;var n;if(typeof r=="function")n=r.propTypes;else if(typeof r=="object"&&(r.$$typeof===m||r.$$typeof===R))n=r.propTypes;else return;if(n){var l=N(r);rr(n,e.props,"prop",l,e)}else if(r.PropTypes!==void 0&&!re){re=!0;var v=N(r);h("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",v||"Unknown")}typeof r.getDefaultProps=="function"&&!r.getDefaultProps.isReactClassApproved&&h("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function mr(e){{for(var r=Object.keys(e.props),n=0;n<r.length;n++){var l=r[n];if(l!=="children"&&l!=="key"){D(e),h("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",l),D(null);break}}e.ref!==null&&(D(e),h("Invalid attribute `ref` supplied to `React.Fragment`."),D(null))}}function Ce(e,r,n,l,v,p){{var f=Je(e);if(!f){var c="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(c+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var _=vr();_?c+=_:c+=je();var y;e===null?y="null":Q(e)?y="array":e!==void 0&&e.$$typeof===t?(y="<"+(N(e.type)||"Unknown")+" />",c=" Did you accidentally export a JSX literal instead of a component?"):y=typeof e,h("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",y,c)}var b=dr(e,r,n,v,p);if(b==null)return b;if(f){var P=r.children;if(P!==void 0)if(l)if(Q(P)){for(var A=0;A<P.length;A++)we(P[A],e);Object.freeze&&Object.freeze(P)}else h("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else we(P,e)}return e===a?mr(b):pr(b),b}}function gr(e,r,n){return Ce(e,r,n,!0)}function yr(e,r,n){return Ce(e,r,n,!1)}var br=yr,xr=gr;W.Fragment=a,W.jsx=br,W.jsxs=xr})()),W}var Pe;function Rr(){return Pe||(Pe=1,process.env.NODE_ENV==="production"?q.exports=jr():q.exports=Fr()),q.exports}var o=Rr();function Oe(s){const[t,i]=w.useState([]),[a,d]=w.useState(null),[x,j]=w.useState(""),[F,m]=w.useState(!1),[T,u]=w.useState(null),R=w.useCallback(async()=>{try{m(!0),u(null);const g=await s.getFiles();if(i(g),!a&&g.length>0){const h=ke(g);h&&d(h.id)}}catch(g){u(g instanceof Error?g.message:"Failed to load files")}finally{m(!1)}},[s,a]),C=w.useCallback(async g=>{try{m(!0),u(null);const h=await s.getFileContent(g);j(h)}catch(h){u(h instanceof Error?h.message:"Failed to load file content"),j("")}finally{m(!1)}},[s]),k=w.useCallback(async g=>{if(a)try{u(null),await s.updateFileContent(a,g),j(g),i(h=>Ie(h,a,{content:g}))}catch(h){u(h instanceof Error?h.message:"Failed to update file content")}},[a,s]),z=w.useCallback(g=>{d(g),C(g)},[C]),J=w.useCallback(()=>{R()},[R]),G=w.useCallback(g=>Ne(t,g),[t]);return w.useEffect(()=>{R()},[R]),w.useEffect(()=>{a&&C(a)},[a,C]),{files:t,activeFile:a,fileContent:x,loading:F,error:T,setActiveFile:z,updateFileContent:k,refreshFiles:J,getFileById:G}}function ke(s){for(const t of s){if(t.type==="file")return t;if(t.children){const i=ke(t.children);if(i)return i}}return null}function Ne(s,t){for(const i of s){if(i.id===t)return i;if(i.children){const a=Ne(i.children,t);if(a)return a}}return null}function Ie(s,t,i){return s.map(a=>a.id===t?{...a,...i}:a.children?{...a,children:Ie(a.children,t,i)}:a)}class De{config;files=[];constructor(t){this.config=t}async getFiles(){return this.files.length===0&&await this.loadFiles(),this.files}async getFileContent(t){if(t==="main-function")return await this.config.fetchFunction(this.config.functionId,this.config.version);throw new Error(`File ${t} not found`)}async updateFileContent(t,i){const a=this.findFileById(t);a&&(a.content=i),console.log(`Updated file ${t} with content:`,i)}async getFileMetadata(t){return this.findFileById(t)?.metadata||{}}async loadFiles(){this.files=[{id:"main-function",name:"function.js",type:"file",path:"/function.js",metadata:{language:"javascript",lastModified:new Date}},{id:"versions",name:"versions",type:"folder",path:"/versions",children:this.config.versionList.map(t=>({id:`version-${t}`,name:`v${t}.js`,type:"file",path:`/versions/v${t}.js`,metadata:{language:"javascript"}}))}]}findFileById(t){const i=a=>{for(const d of a){if(d.id===t)return d;if(d.children){const x=i(d.children);if(x)return x}}return null};return i(this.files)}}class Ae{config;files=[];constructor(t){this.config=t,this.initializeFiles()}async getFiles(){return this.files}async getFileContent(t){if(t==="form-code")return this.config.codeContent;throw new Error(`File ${t} not found`)}async updateFileContent(t,i){if(t==="form-code"){this.config.codeContent=i;const a=this.files.find(d=>d.id===t);a&&(a.content=i)}}async getFileMetadata(t){return this.findFileById(t)?.metadata||{}}initializeFiles(){this.files=[{id:"form-code",name:this.config.fileName||"code.js",type:"file",path:`/${this.config.fileName||"code.js"}`,content:this.config.codeContent,metadata:{language:this.config.language||"javascript",lastModified:new Date}}]}findFileById(t){return this.files.find(i=>i.id===t)||null}}class $e{config;files=[];constructor(t){this.config=t,this.initializeFiles()}async getFiles(){return this.files}async getFileContent(t){const i=this.findFileById(t);if(!i||!i.metadata?.url)throw new Error(`File ${t} not found`);try{const a=await fetch(i.metadata.url);if(!a.ok)throw new Error(`Failed to fetch file: ${a.statusText}`);return await a.text()}catch(a){throw new Error(`Error fetching file content: ${a}`)}}async updateFileContent(t,i){console.log(`Would save file ${t} content to backend:`,i);const a=this.findFileById(t);a&&(a.content=i)}async getFileMetadata(t){return this.findFileById(t)?.metadata||{}}initializeFiles(){this.files=this.config.fileUrls.map((t,i)=>({id:`url-file-${i}`,name:t.name,type:"file",path:`/${t.name}`,metadata:{language:t.type,url:t.url,lastModified:new Date}}))}findFileById(t){return this.files.find(i=>i.id===t)||null}}function Le(s){if(s.workflowConfig)return new De(s.workflowConfig);if(s.formConfig)return new Ae(s.formConfig);if(s.urlConfig)return new $e(s.urlConfig);throw new Error("No valid configuration provided")}const We=({value:s,onChange:t,language:i="javascript",filename:a,readOnly:d=!1,loading:x=!1})=>{const j=F=>{F!==void 0&&t(F)};return o.jsx("div",{className:"h-full w-full",children:o.jsx(Er,{height:"100%",defaultLanguage:i,defaultValue:s,onChange:j,theme:"vs-light",options:{minimap:{enabled:!1},fontSize:14,wordWrap:"on",automaticLayout:!0,padding:{top:16},scrollBeyondLastLine:!1,readOnly:d}})})},wr=({activePanel:s,setActivePanel:t})=>{const i=[{id:"explorer",icon:S.IconFolderOpen,label:"Files"},{id:"data",icon:S.IconDatabase,label:"Data"},{id:"functions",icon:S.IconCode,label:"Functions"},{id:"versions",icon:S.IconHistory,label:"Versions"},{id:"tests",icon:S.IconFlask,label:"Tests"}];return o.jsxs("div",{className:"w-14 border-r border-slate-200 bg-white flex flex-col gap-4 items-center py-4",children:[i.map(a=>{const d=a.icon;return o.jsx(E.Tooltip,{title:a.label,placement:"right",children:o.jsx(E.Button,{type:s===a.id?"primary":"text",icon:o.jsx(d,{size:16}),onClick:()=>t(a.id)})},a.id)}),o.jsx("div",{className:"mt-auto",children:o.jsx(E.Tooltip,{title:"Settings",placement:"right",children:o.jsx(E.Button,{type:"text",icon:o.jsx(S.IconSettings,{size:20})})})})]})},ze=({leftPanel:s,editor:t,rightPanel:i,activePanel:a,setActivePanel:d})=>o.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[o.jsx(wr,{activePanel:a,setActivePanel:d}),o.jsx("div",{className:"flex-1",children:i?o.jsxs(E.Splitter,{style:{height:"100%"},onResize:x=>console.log(x),children:[o.jsx(E.Splitter.Panel,{defaultSize:"25%",min:"15%",max:"40%",className:"bg-white border-r border-slate-200",collapsible:!0,children:o.jsx("div",{className:"h-full overflow-y-auto",children:s})}),o.jsx(E.Splitter.Panel,{defaultSize:"50%",min:"30%",children:t}),o.jsx(E.Splitter.Panel,{defaultSize:"25%",min:"20%",max:"50%",className:"bg-white border-l border-slate-200",children:o.jsx("div",{className:"h-full overflow-y-auto",children:i})})]}):o.jsxs(E.Splitter,{style:{height:"100%"},children:[o.jsx(E.Splitter.Panel,{defaultSize:"25%",min:"15%",max:"40%",className:"bg-white border-r border-slate-200",children:o.jsx("div",{className:"h-full overflow-y-auto",children:s})}),o.jsx(E.Splitter.Panel,{defaultSize:"75%",min:"60%",children:t})]})})]}),Be=({files:s,activeFile:t,onFileSelect:i,loading:a=!1,error:d=null,onRefresh:x})=>{const j=T=>T.map(u=>({title:u.name,key:u.id,icon:u.type==="file"?o.jsx(S.IconFile,{size:16,className:"text-slate-500 flex"}):o.jsx(S.IconFolderOpen,{size:16,className:"text-slate-500 flex"}),isLeaf:u.type==="file",children:u.children?j(u.children):void 0,metadata:u.metadata})),F=j(s),m=(T,u)=>{u?.node.isLeaf&&u.node.key&&i(u.node.key)};return o.jsxs("div",{className:"h-full",children:[o.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-slate-200",children:[o.jsx("h2",{className:"font-medium text-sm",children:"Files"}),o.jsx("div",{className:"flex items-center gap-2",children:x&&o.jsx(E.Button,{type:"text",icon:o.jsx(S.IconPlus,{size:16}),onClick:x,loading:a,title:"Refresh files"})})]}),o.jsxs("div",{className:"p-2",children:[d&&o.jsx(E.Alert,{message:"Error loading files",description:d,type:"error",className:"mb-2"}),o.jsx(E.Tree,{treeData:F,onSelect:m,selectedKeys:t?[t]:[],showIcon:!0,defaultExpandAll:!0,showLine:!0,className:"file-explorer-tree"})]})]})},H=({config:s,rightPanel:t=!1})=>{const i=w.useMemo(()=>Le(s),[s]);console.log({config:s});const{files:a,activeFile:d,fileContent:x,loading:j,error:F,setActiveFile:m,updateFileContent:T,refreshFiles:u,getFileById:R}=Oe(i),C=d?R(d):null,k=C?.metadata?.language||"javascript";return o.jsx(ze,{leftPanel:o.jsx(Be,{files:a,activeFile:d,onFileSelect:m,loading:j,error:F,onRefresh:u}),editor:o.jsx(We,{value:x,onChange:T,language:k,filename:C?.name,readOnly:s.settings?.readOnly,loading:j}),rightPanel:t,activePanel:"explorer",setActivePanel:()=>{}})},Cr=({functionId:s,version:t,versionList:i,fetchFunction:a,fetchVersionList:d})=>{const x={workflowConfig:{functionId:s,version:t,versionList:i,fetchFunction:a,fetchVersionList:d}};return o.jsx(H,{config:x})},_r=({codeContent:s,fileName:t="code.js",language:i="javascript",readOnly:a=!1})=>{const d={formConfig:{codeContent:s,fileName:t,language:i},settings:{readOnly:a}};return o.jsx(H,{config:d})},Sr=({fileUrls:s,rightPanel:t})=>{const i={urlConfig:{fileUrls:s}};return o.jsx(H,{config:i,rightPanel:t})},Tr=({activeFile:s,showPreview:t,setShowPreview:i})=>o.jsxs("div",{className:"h-14 border-b border-slate-200 bg-white px-4 flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center",children:[o.jsx("h1",{className:"text-lg font-semibold text-slate-900 mr-4",children:"CRM Code Editor"}),o.jsx("span",{className:"text-sm text-slate-500 px-2 py-1 bg-slate-100 rounded-md",children:s})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx("button",{className:"p-1.5 hover:bg-slate-100 rounded-md text-slate-600",onClick:()=>i(!t),title:t?"Hide Preview":"Show Preview",children:t?o.jsx(S.IconEyeOff,{size:18}):o.jsx(S.IconEye,{size:18})}),o.jsx("button",{className:"p-1.5 hover:bg-slate-100 rounded-md text-slate-600",title:"Version History",children:o.jsx(S.IconHistory,{size:18})}),o.jsx("button",{className:"p-1.5 hover:bg-slate-100 rounded-md text-slate-600",title:"Run Code",children:o.jsx(S.IconPlayerPlay,{size:18})}),o.jsx("button",{className:"p-1.5 hover:bg-slate-100 rounded-md text-slate-600",title:"Export",children:o.jsx(S.IconDownload,{size:18})}),o.jsxs("button",{className:"ml-2 px-3 py-1.5 bg-slate-900 text-white rounded-md flex items-center text-sm hover:bg-slate-800",children:[o.jsx(S.IconDeviceFloppy,{size:16,className:"mr-1.5"})," Save"]}),o.jsxs("div",{className:"ml-2 px-3 py-1.5 bg-emerald-100 text-emerald-800 rounded-md flex items-center text-sm",children:[o.jsx("span",{className:"w-2 h-2 bg-emerald-500 rounded-full mr-1.5"})," ","Draft"]})]})]}),Pr="1.0.0";Object.defineProperty(exports,"Alert",{enumerable:!0,get:()=>E.Alert});Object.defineProperty(exports,"Button",{enumerable:!0,get:()=>E.Button});Object.defineProperty(exports,"Splitter",{enumerable:!0,get:()=>E.Splitter});Object.defineProperty(exports,"Tooltip",{enumerable:!0,get:()=>E.Tooltip});Object.defineProperty(exports,"Tree",{enumerable:!0,get:()=>E.Tree});exports.CodeEditor=We;exports.CodeEditorWrapper=H;exports.EditorLayout=ze;exports.FileExplorer=Be;exports.FormCodeEditor=_r;exports.FormFileProvider=Ae;exports.Header=Tr;exports.URLCodeEditor=Sr;exports.URLFileProvider=$e;exports.VERSION=Pr;exports.WorkflowCodeEditor=Cr;exports.WorkflowFileProvider=De;exports.createFileProvider=Le;exports.useFileManager=Oe;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { CodeEditorWrapper } from "./components/codeEditorWrapper";
|
|
2
2
|
export { CodeEditor } from "./components/editor/codeEditor";
|
|
3
3
|
export { EditorLayout } from "./components/layout/editorLayout";
|
|
4
|
+
export { Header } from "./components/layout/header";
|
|
4
5
|
export { FileExplorer } from "./components/panels/fileExplorer";
|
|
5
6
|
export { createFileProvider, FormFileProvider, URLFileProvider, WorkflowFileProvider, } from "./providers/fileProviders";
|
|
6
7
|
export { useFileManager } from "./hooks/useFileManager";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG9D,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG9D,eAAO,MAAM,OAAO,UAAU,CAAC"}
|