* Add new exportFile icon * Isolate exportFromEngine command * Naive initial export command * Update types to accept functions for arg defaultValue, required, and options * Make existing helper functions and configs work with new types * Make UI components work with new types support resolving function values and conditional logic * Add full export command to command bar * Replace ExportButton with thin wrapper on cmd bar command * fmt * Fix stale tests and bugs found by good tests * fmt * Update src/components/CommandBar/CommandArgOptionInput.tsx * Update snapshot tests and onboarding wording * Move the panel open click into doExport * Don't need to input storage step in export tests anymore * Remove console logs, fmt, select options if we need to * Increase test timeout --------- Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { CommandSetConfig } from 'lib/commandTypes'
 | |
| import { homeMachine } from 'machines/homeMachine'
 | |
| 
 | |
| export type HomeCommandSchema = {
 | |
|   'Create project': {
 | |
|     name: string
 | |
|   }
 | |
|   'Open project': {
 | |
|     name: string
 | |
|   }
 | |
|   'Delete project': {
 | |
|     name: string
 | |
|   }
 | |
|   'Rename project': {
 | |
|     oldName: string
 | |
|     newName: string
 | |
|   }
 | |
| }
 | |
| 
 | |
| export const homeCommandBarConfig: CommandSetConfig<
 | |
|   typeof homeMachine,
 | |
|   HomeCommandSchema
 | |
| > = {
 | |
|   'Open project': {
 | |
|     icon: 'arrowRight',
 | |
|     description: 'Open a project',
 | |
|     args: {
 | |
|       name: {
 | |
|         inputType: 'options',
 | |
|         required: true,
 | |
|         options: [],
 | |
|         optionsFromContext: (context) =>
 | |
|           context.projects.map((p) => ({
 | |
|             name: p.name!,
 | |
|             value: p.name!,
 | |
|           })),
 | |
|       },
 | |
|     },
 | |
|   },
 | |
|   'Create project': {
 | |
|     icon: 'folderPlus',
 | |
|     description: 'Create a project',
 | |
|     args: {
 | |
|       name: {
 | |
|         inputType: 'string',
 | |
|         required: true,
 | |
|         defaultValueFromContext: (context) => context.defaultProjectName,
 | |
|       },
 | |
|     },
 | |
|   },
 | |
|   'Delete project': {
 | |
|     icon: 'close',
 | |
|     description: 'Delete a project',
 | |
|     needsReview: true,
 | |
|     args: {
 | |
|       name: {
 | |
|         inputType: 'options',
 | |
|         required: true,
 | |
|         options: [],
 | |
|         optionsFromContext: (context) =>
 | |
|           context.projects.map((p) => ({
 | |
|             name: p.name!,
 | |
|             value: p.name!,
 | |
|           })),
 | |
|       },
 | |
|     },
 | |
|   },
 | |
|   'Rename project': {
 | |
|     icon: 'folder',
 | |
|     description: 'Rename a project',
 | |
|     needsReview: true,
 | |
|     args: {
 | |
|       oldName: {
 | |
|         inputType: 'options',
 | |
|         required: true,
 | |
|         options: [],
 | |
|         optionsFromContext: (context) =>
 | |
|           context.projects.map((p) => ({
 | |
|             name: p.name!,
 | |
|             value: p.name!,
 | |
|           })),
 | |
|       },
 | |
|       newName: {
 | |
|         inputType: 'string',
 | |
|         required: true,
 | |
|         defaultValueFromContext: (context) => context.defaultProjectName,
 | |
|       },
 | |
|     },
 | |
|   },
 | |
| }
 |