superleap-code-editor 1.0.0

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 (37) hide show
  1. package/README.md +356 -0
  2. package/dist/components/codeEditorWrapper.d.ts +30 -0
  3. package/dist/components/codeEditorWrapper.d.ts.map +1 -0
  4. package/dist/components/editor/codeEditor.d.ts +12 -0
  5. package/dist/components/editor/codeEditor.d.ts.map +1 -0
  6. package/dist/components/layout/editorLayout.d.ts +11 -0
  7. package/dist/components/layout/editorLayout.d.ts.map +1 -0
  8. package/dist/components/layout/header.d.ts +9 -0
  9. package/dist/components/layout/header.d.ts.map +1 -0
  10. package/dist/components/layout/sidebar.d.ts +8 -0
  11. package/dist/components/layout/sidebar.d.ts.map +1 -0
  12. package/dist/components/panels/dataExplorer.d.ts +3 -0
  13. package/dist/components/panels/dataExplorer.d.ts.map +1 -0
  14. package/dist/components/panels/fileExplorer.d.ts +13 -0
  15. package/dist/components/panels/fileExplorer.d.ts.map +1 -0
  16. package/dist/components/panels/functionLibrary.d.ts +3 -0
  17. package/dist/components/panels/functionLibrary.d.ts.map +1 -0
  18. package/dist/components/panels/previewPanel.d.ts +7 -0
  19. package/dist/components/panels/previewPanel.d.ts.map +1 -0
  20. package/dist/components/panels/testRunner.d.ts +3 -0
  21. package/dist/components/panels/testRunner.d.ts.map +1 -0
  22. package/dist/components/panels/versionHistory.d.ts +3 -0
  23. package/dist/components/panels/versionHistory.d.ts.map +1 -0
  24. package/dist/examples/codeEditorExamples.d.ts +6 -0
  25. package/dist/examples/codeEditorExamples.d.ts.map +1 -0
  26. package/dist/hooks/useFileManager.d.ts +14 -0
  27. package/dist/hooks/useFileManager.d.ts.map +1 -0
  28. package/dist/index.cjs.js +22 -0
  29. package/dist/index.d.ts +12 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.esm.js +847 -0
  32. package/dist/providers/fileProviders.d.ts +36 -0
  33. package/dist/providers/fileProviders.d.ts.map +1 -0
  34. package/dist/types/fileTypes.d.ts +48 -0
  35. package/dist/types/fileTypes.d.ts.map +1 -0
  36. package/dist/vite.svg +1 -0
  37. package/package.json +81 -0
package/README.md ADDED
@@ -0,0 +1,356 @@
1
+ # @superleap/code-editor
2
+
3
+ A flexible, reusable React code editor component with multiple file handling modes, built with Monaco Editor and Ant Design.
4
+
5
+ ## Features
6
+
7
+ - 🚀 **Multiple File Sources**: Support for workflow data, form content, and URL-based files
8
+ - 📁 **File Explorer**: Tree-based file navigation with Ant Design components
9
+ - 🎨 **Monaco Editor**: Full-featured code editor with syntax highlighting
10
+ - 🔧 **Resizable Panels**: Splitter-based layout with collapsible panels
11
+ - ⌨️ **Keyboard Shortcuts**: VS Code-like shortcuts (Ctrl+B to toggle panels)
12
+ - 🎯 **TypeScript**: Full TypeScript support with type definitions
13
+ - 📦 **Tree Shakeable**: Optimized bundle size with tree shaking support
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install @superleap/code-editor
19
+ # or
20
+ yarn add @superleap/code-editor
21
+ # or
22
+ pnpm add @superleap/code-editor
23
+ ```
24
+
25
+ ## Peer Dependencies
26
+
27
+ This package requires the following peer dependencies:
28
+
29
+ ```bash
30
+ npm install react react-dom antd @monaco-editor/react @tabler/icons-react
31
+ ```
32
+
33
+ ## Quick Start
34
+
35
+ ### Basic Usage
36
+
37
+ ```tsx
38
+ import { CodeEditorWrapper } from '@superleap/code-editor';
39
+ import '@superleap/code-editor/styles';
40
+
41
+ function App() {
42
+ const config = {
43
+ formConfig: {
44
+ codeContent: 'console.log("Hello World!");',
45
+ fileName: 'example.js',
46
+ language: 'javascript'
47
+ }
48
+ };
49
+
50
+ return <CodeEditorWrapper config={config} />;
51
+ }
52
+ ```
53
+
54
+ ## File Handling Modes
55
+
56
+ ### 1. Workflow Mode
57
+
58
+ For code that's stored with function IDs and versions:
59
+
60
+ ```tsx
61
+ import { WorkflowCodeEditor } from '@superleap/code-editor';
62
+
63
+ function App() {
64
+ const fetchFunction = async (functionId: string, version: string) => {
65
+ const response = await fetch(`/api/functions/${functionId}/${version}`);
66
+ return response.text();
67
+ };
68
+
69
+ const fetchVersionList = async (functionId: string) => {
70
+ const response = await fetch(`/api/functions/${functionId}/versions`);
71
+ return response.json();
72
+ };
73
+
74
+ return (
75
+ <WorkflowCodeEditor
76
+ functionId="func-123"
77
+ version="2.1.0"
78
+ versionList={['1.0.0', '2.0.0', '2.1.0']}
79
+ fetchFunction={fetchFunction}
80
+ fetchVersionList={fetchVersionList}
81
+ />
82
+ );
83
+ }
84
+ ```
85
+
86
+ ### 2. Form Mode
87
+
88
+ For code stored as strings in form data:
89
+
90
+ ```tsx
91
+ import { FormCodeEditor } from '@superleap/code-editor';
92
+
93
+ function App() {
94
+ const [code, setCode] = useState('function example() { return "Hello"; }');
95
+
96
+ return (
97
+ <FormCodeEditor
98
+ codeContent={code}
99
+ fileName="script.js"
100
+ language="javascript"
101
+ readOnly={false}
102
+ />
103
+ );
104
+ }
105
+ ```
106
+
107
+ ### 3. URL Mode
108
+
109
+ For files accessible via URLs:
110
+
111
+ ```tsx
112
+ import { URLCodeEditor } from '@superleap/code-editor';
113
+
114
+ function App() {
115
+ const fileUrls = [
116
+ {
117
+ url: 'https://example.com/script.js',
118
+ name: 'script.js',
119
+ type: 'js'
120
+ },
121
+ {
122
+ url: 'https://example.com/style.css',
123
+ name: 'style.css',
124
+ type: 'css'
125
+ }
126
+ ];
127
+
128
+ return <URLCodeEditor fileUrls={fileUrls} />;
129
+ }
130
+ ```
131
+
132
+ ## Advanced Usage
133
+
134
+ ### Custom Configuration
135
+
136
+ ```tsx
137
+ import { CodeEditorWrapper } from '@superleap/code-editor';
138
+ import type { CodeEditorConfig } from '@superleap/code-editor';
139
+
140
+ function App() {
141
+ const config: CodeEditorConfig = {
142
+ workflowConfig: {
143
+ functionId: 'my-function',
144
+ version: '1.0.0',
145
+ versionList: ['1.0.0', '1.1.0'],
146
+ fetchFunction: async (id, version) => {
147
+ // Your fetch logic
148
+ return 'function myFunction() { return "Hello"; }';
149
+ },
150
+ fetchVersionList: async (id) => {
151
+ // Your version fetch logic
152
+ return ['1.0.0', '1.1.0'];
153
+ }
154
+ },
155
+ settings: {
156
+ readOnly: false,
157
+ autoSave: true,
158
+ theme: 'vs-light',
159
+ fontSize: 14
160
+ }
161
+ };
162
+
163
+ return <CodeEditorWrapper config={config} />;
164
+ }
165
+ ```
166
+
167
+ ### Using Individual Components
168
+
169
+ ```tsx
170
+ import {
171
+ FileExplorer,
172
+ CodeEditor,
173
+ EditorLayout,
174
+ useFileManager,
175
+ createFileProvider
176
+ } from '@superleap/code-editor';
177
+
178
+ function CustomEditor() {
179
+ const fileProvider = useMemo(() => createFileProvider(config), [config]);
180
+ const { files, activeFile, fileContent, setActiveFile, updateFileContent } = useFileManager(fileProvider);
181
+
182
+ return (
183
+ <EditorLayout
184
+ leftPanel={
185
+ <FileExplorer
186
+ files={files}
187
+ activeFile={activeFile}
188
+ onFileSelect={setActiveFile}
189
+ />
190
+ }
191
+ editor={
192
+ <CodeEditor
193
+ value={fileContent}
194
+ onChange={updateFileContent}
195
+ language="javascript"
196
+ />
197
+ }
198
+ activePanel="explorer"
199
+ setActivePanel={() => {}}
200
+ />
201
+ );
202
+ }
203
+ ```
204
+
205
+ ## API Reference
206
+
207
+ ### Components
208
+
209
+ #### `CodeEditorWrapper`
210
+
211
+ Main wrapper component that handles all file operations.
212
+
213
+ **Props:**
214
+ - `config: CodeEditorConfig` - Configuration object
215
+ - `rightPanel?: React.ReactNode` - Optional right panel content
216
+
217
+ #### `WorkflowCodeEditor`
218
+
219
+ Pre-configured component for workflow-based files.
220
+
221
+ **Props:**
222
+ - `functionId: string` - Function identifier
223
+ - `version: string` - Current version
224
+ - `versionList: string[]` - Available versions
225
+ - `fetchFunction: (id: string, version: string) => Promise<string>` - Function to fetch code
226
+ - `fetchVersionList: (id: string) => Promise<string[]>` - Function to fetch versions
227
+
228
+ #### `FormCodeEditor`
229
+
230
+ Pre-configured component for form-based files.
231
+
232
+ **Props:**
233
+ - `codeContent: string` - Code content
234
+ - `fileName?: string` - File name (default: 'code.js')
235
+ - `language?: string` - Language for syntax highlighting (default: 'javascript')
236
+ - `readOnly?: boolean` - Read-only mode (default: false)
237
+
238
+ #### `URLCodeEditor`
239
+
240
+ Pre-configured component for URL-based files.
241
+
242
+ **Props:**
243
+ - `fileUrls: Array<{url: string, name: string, type: string}>` - Array of file URLs
244
+ - `rightPanel?: React.ReactNode` - Optional right panel
245
+
246
+ ### Hooks
247
+
248
+ #### `useFileManager`
249
+
250
+ Hook for managing file operations.
251
+
252
+ **Returns:**
253
+ - `files: FileNode[]` - File tree
254
+ - `activeFile: string | null` - Currently active file ID
255
+ - `fileContent: string` - Content of active file
256
+ - `loading: boolean` - Loading state
257
+ - `error: string | null` - Error state
258
+ - `setActiveFile: (fileId: string) => void` - Set active file
259
+ - `updateFileContent: (content: string) => void` - Update file content
260
+ - `refreshFiles: () => void` - Refresh file list
261
+ - `getFileById: (fileId: string) => FileNode | null` - Get file by ID
262
+
263
+ ### Types
264
+
265
+ #### `CodeEditorConfig`
266
+
267
+ ```typescript
268
+ interface CodeEditorConfig {
269
+ workflowConfig?: {
270
+ functionId: string;
271
+ version: string;
272
+ versionList: string[];
273
+ fetchFunction: (functionId: string, version: string) => Promise<string>;
274
+ fetchVersionList: (functionId: string) => Promise<string[]>;
275
+ };
276
+ formConfig?: {
277
+ codeContent: string;
278
+ fileName?: string;
279
+ language?: string;
280
+ };
281
+ urlConfig?: {
282
+ fileUrls: Array<{
283
+ url: string;
284
+ name: string;
285
+ type: 'js' | 'css' | 'html' | 'json' | 'ts' | 'jsx' | 'tsx';
286
+ }>;
287
+ };
288
+ settings?: {
289
+ readOnly?: boolean;
290
+ autoSave?: boolean;
291
+ theme?: string;
292
+ fontSize?: number;
293
+ };
294
+ }
295
+ ```
296
+
297
+ #### `FileNode`
298
+
299
+ ```typescript
300
+ interface FileNode {
301
+ id: string;
302
+ name: string;
303
+ type: 'file' | 'folder';
304
+ path: string;
305
+ content?: string;
306
+ children?: FileNode[];
307
+ metadata?: {
308
+ size?: number;
309
+ lastModified?: Date;
310
+ language?: string;
311
+ url?: string;
312
+ };
313
+ }
314
+ ```
315
+
316
+ ## Keyboard Shortcuts
317
+
318
+ - `Ctrl + B` - Toggle left panel visibility
319
+ - `Ctrl + Shift + B` - Toggle right panel visibility
320
+
321
+ ## Styling
322
+
323
+ The package includes built-in styles. Import them in your app:
324
+
325
+ ```tsx
326
+ import '@superleap/code-editor/styles';
327
+ ```
328
+
329
+ For custom styling, you can override the CSS classes or use Ant Design's theme customization.
330
+
331
+ ## Development
332
+
333
+ ```bash
334
+ # Install dependencies
335
+ npm install
336
+
337
+ # Start development server (demo)
338
+ npm run dev
339
+
340
+ # Build library
341
+ npm run build
342
+
343
+ # Build demo
344
+ npm run build:demo
345
+
346
+ # Lint
347
+ npm run lint
348
+ ```
349
+
350
+ ## License
351
+
352
+ MIT
353
+
354
+ ## Contributing
355
+
356
+ Contributions are welcome! Please feel free to submit a Pull Request.
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import type { CodeEditorConfig } from "../types/fileTypes";
3
+ interface CodeEditorWrapperProps {
4
+ config: CodeEditorConfig;
5
+ rightPanel?: React.ReactNode;
6
+ }
7
+ export declare const CodeEditorWrapper: React.FC<CodeEditorWrapperProps>;
8
+ export declare const WorkflowCodeEditor: React.FC<{
9
+ functionId: string;
10
+ version: string;
11
+ versionList: string[];
12
+ fetchFunction: (functionId: string, version: string) => Promise<string>;
13
+ fetchVersionList: (functionId: string) => Promise<string[]>;
14
+ }>;
15
+ export declare const FormCodeEditor: React.FC<{
16
+ codeContent: string;
17
+ fileName?: string;
18
+ language?: string;
19
+ readOnly?: boolean;
20
+ }>;
21
+ export declare const URLCodeEditor: React.FC<{
22
+ fileUrls: Array<{
23
+ url: string;
24
+ name: string;
25
+ type: "js" | "css" | "html" | "json" | "ts" | "jsx" | "tsx";
26
+ }>;
27
+ rightPanel?: React.ReactNode;
28
+ }>;
29
+ export {};
30
+ //# sourceMappingURL=codeEditorWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeEditorWrapper.d.ts","sourceRoot":"","sources":["../../src/components/codeEditorWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK3D,UAAU,sBAAsB;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwD9D,CAAC;AAKF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7D,CAkBA,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAkBA,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,QAAQ,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;KAC7D,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B,CAQA,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ interface CodeEditorProps {
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ language?: string;
6
+ filename?: string;
7
+ readOnly?: boolean;
8
+ loading?: boolean;
9
+ }
10
+ export declare const CodeEditor: React.FC<CodeEditorProps>;
11
+ export {};
12
+ //# sourceMappingURL=codeEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editor/codeEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqChD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ interface EditorLayoutProps {
3
+ leftPanel: React.ReactNode;
4
+ editor: React.ReactNode;
5
+ rightPanel: React.ReactNode | false;
6
+ activePanel: string;
7
+ setActivePanel: (panel: string) => void;
8
+ }
9
+ export declare const EditorLayout: React.FC<EditorLayoutProps>;
10
+ export {};
11
+ //# sourceMappingURL=editorLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorLayout.d.ts","sourceRoot":"","sources":["../../../src/components/layout/editorLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,iBAAiB;IACzB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AACD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuDpD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ interface HeaderProps {
3
+ activeFile: string;
4
+ showPreview: boolean;
5
+ setShowPreview: (show: boolean) => void;
6
+ }
7
+ export declare const Header: React.FC<HeaderProps>;
8
+ export {};
9
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/components/layout/header.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AACD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAmDxC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ interface SidebarProps {
3
+ activePanel: string;
4
+ setActivePanel: (panel: string) => void;
5
+ }
6
+ export declare const Sidebar: React.FC<SidebarProps>;
7
+ export {};
8
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/sidebar.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AACD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAoD1C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const DataExplorer: React.FC;
3
+ //# sourceMappingURL=dataExplorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataExplorer.d.ts","sourceRoot":"","sources":["../../../src/components/panels/dataExplorer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAuEhC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import type { FileNode } from "../../types/fileTypes";
3
+ interface FileExplorerProps {
4
+ files: FileNode[];
5
+ activeFile: string | null;
6
+ onFileSelect: (fileId: string) => void;
7
+ loading?: boolean;
8
+ error?: string | null;
9
+ onRefresh?: () => void;
10
+ }
11
+ export declare const FileExplorer: React.FC<FileExplorerProps>;
12
+ export {};
13
+ //# sourceMappingURL=fileExplorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileExplorer.d.ts","sourceRoot":"","sources":["../../../src/components/panels/fileExplorer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,UAAU,iBAAiB;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AACD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAsEpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const FunctionLibrary: React.FC;
3
+ //# sourceMappingURL=functionLibrary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionLibrary.d.ts","sourceRoot":"","sources":["../../../src/components/panels/functionLibrary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EA8EnC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ interface PreviewPanelProps {
3
+ code: string;
4
+ }
5
+ export declare const PreviewPanel: React.FC<PreviewPanelProps>;
6
+ export {};
7
+ //# sourceMappingURL=previewPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/previewPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqFpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const TestRunner: React.FC;
3
+ //# sourceMappingURL=testRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testRunner.d.ts","sourceRoot":"","sources":["../../../src/components/panels/testRunner.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAgG9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const VersionHistory: React.FC;
3
+ //# sourceMappingURL=versionHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionHistory.d.ts","sourceRoot":"","sources":["../../../src/components/panels/versionHistory.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EA2ElC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const ExampleWorkflowEditor: () => import("react/jsx-runtime").JSX.Element;
2
+ export declare const ExampleFormEditor: () => import("react/jsx-runtime").JSX.Element;
3
+ export declare const ExampleURLEditor: () => import("react/jsx-runtime").JSX.Element;
4
+ export declare const ExampleCustomEditor: () => import("react/jsx-runtime").JSX.Element;
5
+ export declare const ExampleAdvancedWorkflow: () => import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=codeEditorExamples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeEditorExamples.d.ts","sourceRoot":"","sources":["../../src/examples/codeEditorExamples.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,qBAAqB,+CA0BjC,CAAC;AAGF,eAAO,MAAM,iBAAiB,+CAwB7B,CAAC;AAGF,eAAO,MAAM,gBAAgB,+CA8B5B,CAAC;AAGF,eAAO,MAAM,mBAAmB,+CAgB/B,CAAC;AAGF,eAAO,MAAM,uBAAuB,+CAoDnC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { FileNode, FileProvider } from "../types/fileTypes";
2
+ export interface UseFileManagerReturn {
3
+ files: FileNode[];
4
+ activeFile: string | null;
5
+ fileContent: string;
6
+ loading: boolean;
7
+ error: string | null;
8
+ setActiveFile: (fileId: string) => void;
9
+ updateFileContent: (content: string) => void;
10
+ refreshFiles: () => void;
11
+ getFileById: (fileId: string) => FileNode | null;
12
+ }
13
+ export declare function useFileManager(fileProvider: FileProvider): UseFileManagerReturn;
14
+ //# sourceMappingURL=useFileManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFileManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useFileManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;CAClD;AAED,wBAAgB,cAAc,CAC5B,YAAY,EAAE,YAAY,GACzB,oBAAoB,CAqHtB"}
@@ -0,0 +1,22 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),ge=require("@monaco-editor/react"),d=require("antd"),j=require("@tabler/icons-react");var P={exports:{}},_={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var J;function be(){if(J)return _;J=1;var i=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(n,a,l){var m=null;if(l!==void 0&&(m=""+l),a.key!==void 0&&(m=""+a.key),"key"in a){l={};for(var b in a)b!=="key"&&(l[b]=a[b])}else l=a;return a=l.ref,{$$typeof:i,type:n,key:m,ref:a!==void 0?a:null,props:l}}return _.Fragment=t,_.jsx=r,_.jsxs=r,_}var k={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var G;function ve(){return G||(G=1,process.env.NODE_ENV!=="production"&&(function(){function i(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===me?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case S:return"Fragment";case f:return"Profiler";case A:return"StrictMode";case ce:return"Suspense";case ue:return"SuspenseList";case de:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case O:return"Portal";case se:return(e.displayName||"Context")+".Provider";case v:return(e._context.displayName||"Context")+".Consumer";case le:var s=e.render;return e=e.displayName,e||(e=s.displayName||s.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case fe:return s=e.displayName||null,s!==null?s:i(e.type)||"Memo";case B:s=e._payload,e=e._init;try{return i(e(s))}catch{}}return null}function t(e){return""+e}function r(e){try{t(e);var s=!1}catch{s=!0}if(s){s=console;var u=s.error,h=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return u.call(s,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",h),t(e)}}function n(e){if(e===S)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===B)return"<...>";try{var s=i(e);return s?"<"+s+">":"<...>"}catch{return"<...>"}}function a(){var e=I.A;return e===null?null:e.getOwner()}function l(){return Error("react-stack-top-frame")}function m(e){if(D.call(e,"key")){var s=Object.getOwnPropertyDescriptor(e,"key").get;if(s&&s.isReactWarning)return!1}return e.key!==void 0}function b(e,s){function u(){Y||(Y=!0,console.error("%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://react.dev/link/special-props)",s))}u.isReactWarning=!0,Object.defineProperty(e,"key",{get:u,configurable:!0})}function y(){var e=i(this.type);return W[e]||(W[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function w(e,s,u,h,R,x,L,z){return u=x.ref,e={$$typeof:T,type:e,key:s,props:x,_owner:R},(u!==void 0?u:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:y}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:L}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:z}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function c(e,s,u,h,R,x,L,z){var p=s.children;if(p!==void 0)if(h)if(he(p)){for(h=0;h<p.length;h++)F(p[h]);Object.freeze&&Object.freeze(p)}else console.error("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 F(p);if(D.call(s,"key")){p=i(e);var C=Object.keys(s).filter(function(pe){return pe!=="key"});h=0<C.length?"{key: someKey, "+C.join(": ..., ")+": ...}":"{key: someKey}",V[p+h]||(C=0<C.length?"{"+C.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ let props = %s;
19
+ <%s {...props} />
20
+ React keys must be passed directly to JSX without using spread:
21
+ let props = %s;
22
+ <%s key={someKey} {...props} />`,h,p,C,p),V[p+h]=!0)}if(p=null,u!==void 0&&(r(u),p=""+u),m(s)&&(r(s.key),p=""+s.key),"key"in s){u={};for(var M in s)M!=="key"&&(u[M]=s[M])}else u=s;return p&&b(u,typeof e=="function"?e.displayName||e.name||"Unknown":e),w(e,p,x,R,a(),u,L,z)}function F(e){typeof e=="object"&&e!==null&&e.$$typeof===T&&e._store&&(e._store.validated=1)}var E=g,T=Symbol.for("react.transitional.element"),O=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),A=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),se=Symbol.for("react.context"),le=Symbol.for("react.forward_ref"),ce=Symbol.for("react.suspense"),ue=Symbol.for("react.suspense_list"),fe=Symbol.for("react.memo"),B=Symbol.for("react.lazy"),de=Symbol.for("react.activity"),me=Symbol.for("react.client.reference"),I=E.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D=Object.prototype.hasOwnProperty,he=Array.isArray,$=console.createTask?console.createTask:function(){return null};E={react_stack_bottom_frame:function(e){return e()}};var Y,W={},U=E.react_stack_bottom_frame.bind(E,l)(),q=$(n(l)),V={};k.Fragment=S,k.jsx=function(e,s,u,h,R){var x=1e4>I.recentlyCreatedOwnerStacks++;return c(e,s,u,!1,h,R,x?Error("react-stack-top-frame"):U,x?$(n(e)):q)},k.jsxs=function(e,s,u,h,R){var x=1e4>I.recentlyCreatedOwnerStacks++;return c(e,s,u,!0,h,R,x?Error("react-stack-top-frame"):U,x?$(n(e)):q)}})()),k}var X;function Ee(){return X||(X=1,process.env.NODE_ENV==="production"?P.exports=be():P.exports=ve()),P.exports}var o=Ee();function H(i){const[t,r]=g.useState([]),[n,a]=g.useState(null),[l,m]=g.useState(""),[b,y]=g.useState(!1),[w,c]=g.useState(null),F=g.useCallback(async()=>{try{y(!0),c(null);const f=await i.getFiles();if(r(f),!n&&f.length>0){const v=Z(f);v&&a(v.id)}}catch(f){c(f instanceof Error?f.message:"Failed to load files")}finally{y(!1)}},[i,n]),E=g.useCallback(async f=>{try{y(!0),c(null);const v=await i.getFileContent(f);m(v)}catch(v){c(v instanceof Error?v.message:"Failed to load file content"),m("")}finally{y(!1)}},[i]),T=g.useCallback(async f=>{if(n)try{c(null),await i.updateFileContent(n,f),m(f),r(v=>K(v,n,{content:f}))}catch(v){c(v instanceof Error?v.message:"Failed to update file content")}},[n,i]),O=g.useCallback(f=>{a(f),E(f)},[E]),S=g.useCallback(()=>{F()},[F]),A=g.useCallback(f=>Q(t,f),[t]);return g.useEffect(()=>{F()},[F]),g.useEffect(()=>{n&&E(n)},[n,E]),{files:t,activeFile:n,fileContent:l,loading:b,error:w,setActiveFile:O,updateFileContent:T,refreshFiles:S,getFileById:A}}function Z(i){for(const t of i){if(t.type==="file")return t;if(t.children){const r=Z(t.children);if(r)return r}}return null}function Q(i,t){for(const r of i){if(r.id===t)return r;if(r.children){const n=Q(r.children,t);if(n)return n}}return null}function K(i,t,r){return i.map(n=>n.id===t?{...n,...r}:n.children?{...n,children:K(n.children,t,r)}:n)}class ee{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,r){const n=this.findFileById(t);n&&(n.content=r),console.log(`Updated file ${t} with content:`,r)}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 r=n=>{for(const a of n){if(a.id===t)return a;if(a.children){const l=r(a.children);if(l)return l}}return null};return r(this.files)}}class te{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,r){if(t==="form-code"){this.config.codeContent=r;const n=this.files.find(a=>a.id===t);n&&(n.content=r)}}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(r=>r.id===t)||null}}class re{config;files=[];constructor(t){this.config=t,this.initializeFiles()}async getFiles(){return this.files}async getFileContent(t){const r=this.findFileById(t);if(!r||!r.metadata?.url)throw new Error(`File ${t} not found`);try{const n=await fetch(r.metadata.url);if(!n.ok)throw new Error(`Failed to fetch file: ${n.statusText}`);return await n.text()}catch(n){throw new Error(`Error fetching file content: ${n}`)}}async updateFileContent(t,r){console.log(`Would save file ${t} content to backend:`,r);const n=this.findFileById(t);n&&(n.content=r)}async getFileMetadata(t){return this.findFileById(t)?.metadata||{}}initializeFiles(){this.files=this.config.fileUrls.map((t,r)=>({id:`url-file-${r}`,name:t.name,type:"file",path:`/${t.name}`,metadata:{language:t.type,url:t.url,lastModified:new Date}}))}findFileById(t){return this.files.find(r=>r.id===t)||null}}function ne(i){if(i.workflowConfig)return new ee(i.workflowConfig);if(i.formConfig)return new te(i.formConfig);if(i.urlConfig)return new re(i.urlConfig);throw new Error("No valid configuration provided")}const ie=({value:i,onChange:t,language:r="javascript",filename:n,readOnly:a=!1,loading:l=!1})=>{const m=b=>{b!==void 0&&t(b)};return o.jsx("div",{className:"h-full w-full",children:o.jsx(ge,{height:"100%",defaultLanguage:r,defaultValue:i,onChange:m,theme:"vs-light",options:{minimap:{enabled:!1},fontSize:14,wordWrap:"on",automaticLayout:!0,padding:{top:16},scrollBeyondLastLine:!1,readOnly:a}})})},ye=({activePanel:i,setActivePanel:t})=>{const r=[{id:"explorer",icon:j.IconFolderOpen,label:"Files"},{id:"data",icon:j.IconDatabase,label:"Data"},{id:"functions",icon:j.IconCode,label:"Functions"},{id:"versions",icon:j.IconHistory,label:"Versions"},{id:"tests",icon:j.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:[r.map(n=>{const a=n.icon;return o.jsx(d.Tooltip,{title:n.label,placement:"right",children:o.jsx(d.Button,{type:i===n.id?"primary":"text",icon:o.jsx(a,{size:16}),onClick:()=>t(n.id)})},n.id)}),o.jsx("div",{className:"mt-auto",children:o.jsx(d.Tooltip,{title:"Settings",placement:"right",children:o.jsx(d.Button,{type:"text",icon:o.jsx(j.IconSettings,{size:20})})})})]})},oe=({leftPanel:i,editor:t,rightPanel:r,activePanel:n,setActivePanel:a})=>o.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[o.jsx(ye,{activePanel:n,setActivePanel:a}),o.jsx("div",{className:"flex-1",children:r?o.jsxs(d.Splitter,{style:{height:"100%"},onResize:l=>console.log(l),children:[o.jsx(d.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:i})}),o.jsx(d.Splitter.Panel,{defaultSize:"50%",min:"30%",children:t}),o.jsx(d.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:r})})]}):o.jsxs(d.Splitter,{style:{height:"100%"},children:[o.jsx(d.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:i})}),o.jsx(d.Splitter.Panel,{defaultSize:"75%",min:"60%",children:t})]})})]}),ae=({files:i,activeFile:t,onFileSelect:r,loading:n=!1,error:a=null,onRefresh:l})=>{const m=w=>w.map(c=>({title:c.name,key:c.id,icon:c.type==="file"?o.jsx(j.IconFile,{size:16,className:"text-slate-500 flex"}):o.jsx(j.IconFolderOpen,{size:16,className:"text-slate-500 flex"}),isLeaf:c.type==="file",children:c.children?m(c.children):void 0,metadata:c.metadata})),b=m(i),y=(w,c)=>{c?.node.isLeaf&&c.node.key&&r(c.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:l&&o.jsx(d.Button,{type:"text",icon:o.jsx(j.IconPlus,{size:16}),onClick:l,loading:n,title:"Refresh files"})})]}),o.jsxs("div",{className:"p-2",children:[a&&o.jsx(d.Alert,{message:"Error loading files",description:a,type:"error",className:"mb-2"}),o.jsx(d.Tree,{treeData:b,onSelect:y,selectedKeys:t?[t]:[],showIcon:!0,defaultExpandAll:!0,showLine:!0,className:"file-explorer-tree"})]})]})},N=({config:i,rightPanel:t=!1})=>{const r=g.useMemo(()=>ne(i),[i]);console.log({config:i});const{files:n,activeFile:a,fileContent:l,loading:m,error:b,setActiveFile:y,updateFileContent:w,refreshFiles:c,getFileById:F}=H(r),E=a?F(a):null,T=E?.metadata?.language||"javascript";return o.jsx(oe,{leftPanel:o.jsx(ae,{files:n,activeFile:a,onFileSelect:y,loading:m,error:b,onRefresh:c}),editor:o.jsx(ie,{value:l,onChange:w,language:T,filename:E?.name,readOnly:i.settings?.readOnly,loading:m}),rightPanel:t,activePanel:"explorer",setActivePanel:()=>{}})},xe=({functionId:i,version:t,versionList:r,fetchFunction:n,fetchVersionList:a})=>{const l={workflowConfig:{functionId:i,version:t,versionList:r,fetchFunction:n,fetchVersionList:a}};return o.jsx(N,{config:l})},Fe=({codeContent:i,fileName:t="code.js",language:r="javascript",readOnly:n=!1})=>{const a={formConfig:{codeContent:i,fileName:t,language:r},settings:{readOnly:n}};return o.jsx(N,{config:a})},je=({fileUrls:i,rightPanel:t})=>{const r={urlConfig:{fileUrls:i}};return o.jsx(N,{config:r,rightPanel:t})},we="1.0.0";Object.defineProperty(exports,"Alert",{enumerable:!0,get:()=>d.Alert});Object.defineProperty(exports,"Button",{enumerable:!0,get:()=>d.Button});Object.defineProperty(exports,"Splitter",{enumerable:!0,get:()=>d.Splitter});Object.defineProperty(exports,"Tooltip",{enumerable:!0,get:()=>d.Tooltip});Object.defineProperty(exports,"Tree",{enumerable:!0,get:()=>d.Tree});exports.CodeEditor=ie;exports.CodeEditorWrapper=N;exports.EditorLayout=oe;exports.FileExplorer=ae;exports.FormCodeEditor=Fe;exports.FormFileProvider=te;exports.URLCodeEditor=je;exports.URLFileProvider=re;exports.VERSION=we;exports.WorkflowCodeEditor=xe;exports.WorkflowFileProvider=ee;exports.createFileProvider=ne;exports.useFileManager=H;
@@ -0,0 +1,12 @@
1
+ export { CodeEditorWrapper } from './components/codeEditorWrapper';
2
+ export { CodeEditor } from './components/editor/codeEditor';
3
+ export { EditorLayout } from './components/layout/editorLayout';
4
+ export { FileExplorer } from './components/panels/fileExplorer';
5
+ export { WorkflowFileProvider, FormFileProvider, URLFileProvider, createFileProvider } from './providers/fileProviders';
6
+ export { useFileManager } from './hooks/useFileManager';
7
+ export type { FileNode, FileProvider, CodeEditorConfig } from './types/fileTypes';
8
+ export type { UseFileManagerReturn } from './hooks/useFileManager';
9
+ export { WorkflowCodeEditor, FormCodeEditor, URLCodeEditor } from './components/codeEditorWrapper';
10
+ export { Splitter, Tree, Button, Tooltip, Alert } from 'antd';
11
+ export declare const VERSION = "1.0.0";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAG9D,eAAO,MAAM,OAAO,UAAU,CAAC"}