#include "rive/nested_animation.hpp"
#include "rive/container_component.hpp"
#include "rive/nested_artboard.hpp"
#include "rive/core_context.hpp"

using namespace rive;

bool NestedAnimation::validate(CoreContext* context)
{
  if (!Super::validate(context))
  {
    return false;
  }

  auto parentObject = context->resolve(parentId());
  // We know parentObject is not null from Super::validate().
  return parentObject->is<NestedArtboard>();
}

StatusCode NestedAnimation::onAddedDirty(CoreContext* context)
{
  StatusCode code = Super::onAddedDirty(context);
#ifndef WITH_RIVE_EDITOR
  // Runtime-only: importer guarantees parent is a NestedArtboard.
  // Editor build registers via editorParentChanged (Pass 4.5).
  if (code == StatusCode::Ok)
  {
    auto nestedArtboard = parent()->as<NestedArtboard>();
    nestedArtboard->addNestedAnimation(this);
  }
#endif
  return code;
}