src/
├── App.vue # Main application component
├── components/ # UI Components
│ ├── ParserSection.vue # Parser configuration form
│ ├── FieldSection.vue # Field configuration form
│ ├── AddFieldButton.vue # Button to add new fields
│ └── HelpSidebar.vue # Help documentation sidebar
├── composables/ # Reusable Logic
│ ├── useParser.js # Parser state & operations
│ ├── useFields.js # Fields management
│ ├── useUI.js # UI state management
│ ├── useFileHandler.js # File operations
│ └── useIniGenerator.js # INI file generation
├── constants/ # Shared Constants
│ └── parser.js # Configuration constants
├── utils/ # Utility Functions
│ ├── validation.js # Validation helpers
│ └── file.js # File handling helpers
└── i18n/ # Internationalization
├── index.js # i18n setup
├── locales/ # Combined translations
└── messages/ # Individual translation files
- Orchestrates all components and composables
- Manages global state through composables
- Handles high-level operations
- useParser: Manages parser configuration state
- useFields: Handles field sections state and operations
- useUI: Controls UI state (sidebars, dropdowns, toasts)
- useFileHandler: Handles file uploads and parsing
- useIniGenerator: Generates INI output
- ParserSection: Parser configuration form
- FieldSection: Individual field configuration
- HelpSidebar: Documentation and help
- AddFieldButton: Adds new field sections
- Parser Configuration:
useParser -> App.vue -> ParserSection.vue -> useIniGenerator
- Field Management:
useFields -> App.vue -> FieldSection.vue -> useIniGenerator
- File Operations:
useFileHandler -> App.vue -> useParser/useFields -> useIniGenerator
{
info: '',
name: '',
comment_mark: '#',
coor_x: 'COORX',
// ... other parser properties
}
{
fieldSections: [...], // Array of field configurations
validationErrors: {}, // Validation state
// ... methods for field management
}
{
showHelpSidebar: false,
currentHelpSection: '',
isDropdownOpen: false,
// ... other UI states
}
When a user modifies a field:
- User input in FieldSection
- Event emitted to App.vue
- App.vue updates state via useFields
- useIniGenerator watches changes
- New INI code generated
- UI updates with new preview