UNPKG

@mlightcad/data-model

Version:

The data-model package provides the core classes for interacting with AutoCAD's database and entities. This package mimics AutoCAD ObjectARX's AcDb (Database) classes and implements the drawing database structure that AutoCAD developers are familiar with.

173 lines 5.73 kB
import { AcCmEventManager } from '@mlightcad/common'; import { AcDbDxfConverter } from '../converter'; /** * Represents the supported drawing file types. */ export var AcDbFileType; (function (AcDbFileType) { /** * DXF (Drawing Exchange Format) file */ AcDbFileType["DXF"] = "dxf"; /** * DWG (Drawing) file */ AcDbFileType["DWG"] = "dwg"; })(AcDbFileType || (AcDbFileType = {})); /** * Manager for registering and managing database converters by file type. * * This class provides a centralized way to register database converters for * different file types (DXF, DWG, etc.) and retrieve the appropriate converter * for a given file type. It implements the singleton pattern and provides * event notifications when converters are registered or unregistered. * * @example * ```typescript * const manager = AcDbDatabaseConverterManager.instance; * const converter = manager.get(AcDbFileType.DXF); * if (converter) { * await converter.read(dxfData, database, 100); * } * ``` */ var AcDbDatabaseConverterManager = /** @class */ (function () { /** * Private constructor to enforce singleton pattern. * * Initializes the manager with a default DXF converter. */ function AcDbDatabaseConverterManager() { /** * Events that can be triggered by the converter manager. * * These events allow applications to respond to converter registration * and unregistration. */ this.events = { /** Fired when a converter is registered */ registered: new AcCmEventManager(), /** Fired when a converter is unregistered */ unregistered: new AcCmEventManager() }; this._converters = new Map(); this.register(AcDbFileType.DXF, new AcDbDxfConverter()); } /** * Creates a new instance of AcDbDatabaseConverterManager. * * @returns The singleton instance of AcDbDatabaseConverterManager * * @example * ```typescript * const manager = AcDbDatabaseConverterManager.createInstance(); * ``` */ AcDbDatabaseConverterManager.createInstance = function () { if (AcDbDatabaseConverterManager._instance == null) { AcDbDatabaseConverterManager._instance = new AcDbDatabaseConverterManager(); } return this._instance; }; Object.defineProperty(AcDbDatabaseConverterManager, "instance", { /** * Gets the singleton instance of this class. * * @returns The singleton instance of AcDbDatabaseConverterManager * * @example * ```typescript * const manager = AcDbDatabaseConverterManager.instance; * ``` */ get: function () { if (!AcDbDatabaseConverterManager._instance) { AcDbDatabaseConverterManager._instance = new AcDbDatabaseConverterManager(); } return AcDbDatabaseConverterManager._instance; }, enumerable: false, configurable: true }); Object.defineProperty(AcDbDatabaseConverterManager.prototype, "fileTypes", { /** * Gets all registered file types. * * @returns An iterator of all registered file types * * @example * ```typescript * const fileTypes = manager.fileTypes; * for (const fileType of fileTypes) { * console.log('Supported file type:', fileType); * } * ``` */ get: function () { return this._converters.keys(); }, enumerable: false, configurable: true }); /** * Registers a database converter for the specified file type. * * @param fileType - The file type to register the converter for * @param converter - The database converter to register * * @example * ```typescript * const converter = new MyCustomConverter(); * manager.register(AcDbFileType.DWG, converter); * ``` */ AcDbDatabaseConverterManager.prototype.register = function (fileType, converter) { this._converters.set(fileType, converter); this.events.registered.dispatch({ fileType: fileType, converter: converter }); }; /** * Gets the database converter associated with the specified file type. * * @param fileType - The file type to get the converter for * @returns The database converter associated with the specified file type, or undefined if not found * * @example * ```typescript * const converter = manager.get(AcDbFileType.DXF); * if (converter) { * await converter.read(dxfData, database, 100); * } * ``` */ AcDbDatabaseConverterManager.prototype.get = function (fileType) { return this._converters.get(fileType); }; /** * Unregisters the database converter for the specified file type. * * @param fileType - The file type to unregister the converter for * * @example * ```typescript * manager.unregister(AcDbFileType.DWG); * ``` */ AcDbDatabaseConverterManager.prototype.unregister = function (fileType) { var converter = this._converters.get(fileType); if (converter) { this._converters.delete(fileType); this.events.unregistered.dispatch({ fileType: fileType, converter: converter }); } }; return AcDbDatabaseConverterManager; }()); export { AcDbDatabaseConverterManager }; //# sourceMappingURL=AcDbDatabaseConverterManager.js.map