UNPKG

@mlightcad/common

Version:

The common package provides shared utilities and base classes that are used across the RealDWG-Web ecosystem. This package contains fundamental components for color management, event handling, logging, performance monitoring, and file loading operations.

133 lines (97 loc) 4.48 kB
# @mlightcad/common The common package provides shared utilities and base classes that are used across the RealDWG-Web ecosystem. This package contains fundamental components for color management, event handling, logging, performance monitoring, and file loading operations. ## Overview This package serves as the foundation for the RealDWG-Web project, providing essential utilities and base classes that mimic AutoCAD ObjectARX's AcCm (Common) classes. It includes color management, event dispatching, logging utilities, performance monitoring, and file loading capabilities. ## Key Features - **Color Management**: Comprehensive color handling with support for AutoCAD color indices and RGB values - **Event System**: Event dispatching and management for decoupled communication between components - **Logging**: Structured logging utilities with different log levels - **Performance Monitoring**: Tools for collecting and analyzing performance metrics - **File Loading**: Asynchronous file loading with progress tracking and error handling - **Task Scheduling**: Background task management and scheduling capabilities ## Installation ```bash npm install @mlightcad/common ``` ## Key Classes ### Color Management - **AcCmColor**: Represents colors in AutoCAD format with support for color indices and RGB values - **AcCmColorUtil**: Utility functions for color conversion and manipulation ### Event System - **AcCmEventDispatcher**: Dispatches events to registered listeners - **AcCmEventManager**: Manages event registration and dispatching across the application ### Logging and Utilities - **AcCmLogUtil**: Structured logging with different log levels (debug, info, warn, error) - **AcCmStringUtil**: String manipulation and formatting utilities - **AcCmErrors**: Error handling and custom error types ### Performance and Tasks - **AcCmPerformanceCollector**: Collects and analyzes performance metrics - **AcCmTaskScheduler**: Manages background tasks and scheduling ### File Loading - **AcCmFileLoader**: Handles asynchronous file loading with progress tracking - **AcCmLoadingManager**: Manages multiple file loading operations - **AcCmLoader**: Base class for implementing custom file loaders ### Base Classes - **AcCmObject**: Base class for common objects with event handling capabilities ## Usage Examples ### Color Management ```typescript import { AcCmColor, AcCmColorUtil } from '@mlightcad/common'; // Create a color from AutoCAD color index const color = new AcCmColor(1); // Red // Create a color from RGB values const rgbColor = new AcCmColor(255, 0, 0); // Convert between formats const rgb = AcCmColorUtil.toRgb(color); const index = AcCmColorUtil.toColorIndex(rgbColor); ``` ### Event Handling ```typescript import { AcCmEventManager, AcCmEventDispatcher } from '@mlightcad/common'; // Create an event dispatcher const dispatcher = new AcCmEventDispatcher(); // Register an event listener dispatcher.addEventListener('fileLoaded', (event) => { console.log('File loaded:', event.data); }); // Dispatch an event dispatcher.dispatchEvent('fileLoaded', { fileName: 'drawing.dwg' }); ``` ### Logging ```typescript import { AcCmLogUtil } from '@mlightcad/common'; // Configure logging AcCmLogUtil.setLevel('info'); // Log messages AcCmLogUtil.info('Application started'); AcCmLogUtil.warn('Deprecated feature used'); AcCmLogUtil.error('Failed to load file', error); ``` ### File Loading ```typescript import { AcCmFileLoader, AcCmLoadingManager } from '@mlightcad/common'; // Create a file loader const loader = new AcCmFileLoader(); // Load a file with progress tracking loader.load('drawing.dwg', { onProgress: (progress) => { console.log(`Loading: ${progress}%`); }, onComplete: (data) => { console.log('File loaded successfully'); }, onError: (error) => { console.error('Failed to load file:', error); } }); // Use loading manager for multiple files const manager = new AcCmLoadingManager(); manager.addLoader(loader); manager.start(); ``` ## Dependencies - **loglevel**: For logging functionality ## API Documentation For detailed API documentation, visit the [RealDWG-Web documentation](https://mlight-lee.github.io/realdwg-web/). ## Contributing This package is part of the RealDWG-Web monorepo. Please refer to the main project README for contribution guidelines.