mapToSkeleton static method

Widget mapToSkeleton(
  1. Widget widget,
  2. SkeletonConfig config,
  3. BuildContext? context
)

Maps a widget to its skeleton equivalent with caching and registry support.

Implementation

static Widget mapToSkeleton(
  Widget widget,
  SkeletonConfig config,
  BuildContext? context,
) {
  final widgetType = widget.runtimeType;

  // Check custom registry first
  if (SkeletonRegistry.hasBuilder(widgetType)) {
    final builder = SkeletonRegistry.getBuilder(widgetType)!;
    final skeleton = builder(widget, config, context);

    if (config.debugMode) {
      SkeletonDebug.logMapping(
        widgetType,
        skeleton.runtimeType,
        'Custom registry builder',
      );
    }

    return skeleton;
  }

  // Try cache if enabled
  if (config.enableCache) {
    final cacheKey = _createCacheKey(widget, config);
    final cached = SkeletonCache.get(cacheKey);

    if (cached != null) {
      if (config.debugMode) {
        SkeletonDebug.logCacheHit(widgetType);
      }
      return cached;
    } else if (config.debugMode) {
      SkeletonDebug.logCacheMiss(widgetType);
    }
  }

  // Generate skeleton
  final skeleton = _generateSkeleton(widget, config, context);

  // Cache if enabled
  if (config.enableCache) {
    final cacheKey = _createCacheKey(widget, config);
    SkeletonCache.put(cacheKey, skeleton);
  }

  return skeleton;
}