/* * Copyright (c) 2023, Ali Mohammad Pur * * SPDX-License-Identifier: BSD-2-Clause */ #include "CSSKeyframesRule.h" #include #include namespace Web::CSS { JS_DEFINE_ALLOCATOR(CSSKeyframesRule); JS::NonnullGCPtr CSSKeyframesRule::create(JS::Realm& realm, FlyString name, JS::MarkedVector> keyframes) { return realm.heap().allocate(realm, realm, move(name), move(keyframes)); } void CSSKeyframesRule::visit_edges(Visitor& visitor) { Base::visit_edges(visitor); for (auto& keyframe : m_keyframes) visitor.visit(keyframe); } void CSSKeyframesRule::initialize(JS::Realm& realm) { Base::initialize(realm); set_prototype(&Bindings::ensure_web_prototype(realm, "CSSKeyframesRule"_fly_string)); } String CSSKeyframesRule::serialized() const { StringBuilder builder; builder.appendff("@keyframes \"{}\"", name()); builder.append(" { "sv); for (auto const& keyframe : keyframes()) { builder.append(keyframe->css_text()); builder.append(' '); } builder.append('}'); return MUST(builder.to_string()); } }