/** * Property Manager - Unified property lifecycle for web components * * Handles property/attribute synchronization, validation, coercion, and change tracking. * All property updates flow through a single code path for consistency. */ /** * Configuration for a single property */ export interface PropertyConfig { type: 'string' | 'boolean' | 'number' | 'object' | 'array'; visual?: boolean; formValue?: boolean; emitChange?: boolean; default?: any; validate?: (value: any) => boolean; coerce?: (value: any) => any; aliases?: Record; } /** * Represents a property change */ export interface PropertyChange { name: string; oldValue: any; newValue: any; source: 'attribute' | 'property' | 'internal'; } /** * Manages component properties with unified lifecycle */ export declare class PropertyManager { private _props; private _config; constructor(config: Record); /** * Initialize properties with default values */ private _initializeDefaults; /** * Check if a property name exists in the configuration */ hasConfig(name: string): boolean; /** * Update a property value * Returns PropertyChange if value changed, null otherwise */ updateProperty(name: string, value: any, source?: 'attribute' | 'property' | 'internal'): PropertyChange | null; /** * Coerce value to the correct type */ private _coerceValue; /** * Validate a property value */ private _validateValue; /** * Check if two values are equal */ private _valuesEqual; /** * Get a property value */ get(name: string): any; /** * Get all properties as an object */ getAll(): Record; /** * Get property configuration */ getConfig(name: string): PropertyConfig | undefined; /** * Check if a property is visual (requires render) */ isVisual(name: string): boolean; /** * Check if a property affects form value */ isFormValue(name: string): boolean; /** * Check if a property should emit change events */ shouldEmitChange(name: string): boolean; /** * Handle property aliases (e.g., not-searchable → searchable: false) */ handleAlias(aliasName: string, value: any): PropertyChange | null; } //# sourceMappingURL=property-manager.d.ts.map